MSI Installer - Installed OO.o detection

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

MSI Installer - Installed OO.o detection

Robert Vojta
Hallo,

I have my own Win32 build, which is based on the ooo-build-2-1 branch
without Windows specific patches. My build is unable to detect older /
same / newer version of already installed OO.o. Normal behavior is,
that if you have newer version, warning dialog is displayed and
installation is canceled. Similiar behavior for same version, ...

I found OOO_CUSTOMACTION_1, NewProduct, ... in .idt files. But I can't
find, where is the place where OO.o MSI installer is checking for
already installed OO.o. Anyone has an idea where I should look? Where
is the code which is checking for already installed OO.o? Or is this
done by MSI installer? If yes, how MSI installer does this? Based on
the product name, product version, registry, ...?


Modules like instsetoo_native, scp2, setup_native aren't modified :(

Best regards,
Robert

--
Robert Vojta

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: MSI Installer - Installed OO.o detection

Robert Vojta
On 3/23/07, Robert Vojta <[hidden email]> wrote:

Hallo,

> But I can't find, where is the place where OO.o MSI installer is
> checking for already installed OO.o. Anyone has an idea where I
> should look? Where is the code which is checking for already
> installed OO.o? Or is this done by MSI installer? If yes, how MSI
> installer does this? Based on the product name, product version,
> registry, ...?

for the mailing list archive purpose ...

Each MSI installer package has its own ProductCode (GUID), which is
unique. If you want to prepare MSI package for upgrades, ... you have
to include UpgradeCode (GUID), which should be same for all OO.o
versions = all MSI packages. MSI checks your UpgradeCode against
already installed packages and you can customize actions in the
Upgrade.idt file - what to do if newer package is installed, same or
older.

In my build, UpgradeCode is same as UpgradeCode in Sun's OO.o
versions. When I install my 2.1 build, Sun's OO.o 2.0.4 build detects
newer version properly. So, the UpgradeCode is correct. But when I
install Sun's OO.o 2.1, 2.2, installed OO.o is not detected by my
build. Strange.

So, I found how to enable debugging of MSI installation. You have to
add these two values to the system registry.

HKLM/Software/Policies/Microsoft/Windows/Installer

 Debug = DWORD(00000007)
 Logging = STRING(warmupx!v)

Then you can run DbMon.exe (from Platform SDK) and start your
installation. Lot of debug messages are store in %TEMP%\MSIxxxxx.log.

The problem here is, that I can't make it more verbose. I found just
one message - FindRelatedProduct -> no related products. Anyone know
if I can make it more verbose? To see what MSI checks, what compares,
...?

Regards,
Robert

--
Robert Vojta

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: MSI Installer - Installed OO.o detection

Robert Vojta
On 3/24/07, Robert Vojta <[hidden email]> wrote:

Hallo,

> The problem here is, that I can't make it more verbose. I found just
> one message - FindRelatedProduct -> no related products. Anyone know
> if I can make it more verbose? To see what MSI checks, what compares,
> ...?

it looks like that I've found where the problem is. My setup.exe
starts in per-user mode (*) and can't detect per-machine
installations. When I install Sun's OO.o in per-user mode, my MSI
installer can detect installed OO.o

(*) I have no idea, why it starts in per-user mode. Sun's OO.o MSI
installer can detect per-user / per-machine installation, but my not.
I wonder why, because there is no change in the MSI installer in my
build when I compare it to Sun's OO.o.

Regards,
Robert

--
Robert Vojta

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Re: MSI Installer - Installed OO.o detection

Ingo Schmidt
In reply to this post by Robert Vojta
Hi Robert,

there is a CustomAction that is executed at the beginning of the
InstallExecuteSequence and at the beginning of the InstallUISequence. It
is named "Shellextensionsdll5". This CustomAction sets the value of the
global property "ALLUSERS", if another product with the same UpgradeCode
is found. You find the code of this CustomAction in

setup_native/source/win32/customactions/shellextensions/upgrade.cxx

This CustomAction must be executed before the StandardAction
"FindRelatedProducts". Otherwise "FindRelatedProducts" does not work
correctly.

Regards

  Ingo


Robert Vojta wrote:

> On 3/24/07, Robert Vojta <[hidden email]> wrote:
>
> Hallo,
>
>> The problem here is, that I can't make it more verbose. I found just
>> one message - FindRelatedProduct -> no related products. Anyone know
>> if I can make it more verbose? To see what MSI checks, what compares,
>> ...?
>
> it looks like that I've found where the problem is. My setup.exe
> starts in per-user mode (*) and can't detect per-machine
> installations. When I install Sun's OO.o in per-user mode, my MSI
> installer can detect installed OO.o
>
> (*) I have no idea, why it starts in per-user mode. Sun's OO.o MSI
> installer can detect per-user / per-machine installation, but my not.
> I wonder why, because there is no change in the MSI installer in my
> build when I compare it to Sun's OO.o.
>
> Regards,
> Robert
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Re: MSI Installer - Installed OO.o detection

Robert Vojta
On 3/26/07, Ingo Schmidt <[hidden email]> wrote:

Hallo Ingo,

> there is a CustomAction that is executed at the beginning of the
> InstallExecuteSequence and at the beginning of the InstallUISequence. It
> is named "Shellextensionsdll5". This CustomAction sets the value of the
> global property "ALLUSERS", if another product with the same UpgradeCode
> is found. You find the code of this CustomAction in
>
> setup_native/source/win32/customactions/shellextensions/upgrade.cxx

thanks for this hint. I enabled "dialog box error messages" and I found that
this patch isn't used in my MSI. I wonder why and I have to find why this
patch isn't included in my MSI installer.

Regards,
Robert

--
Robert Vojta

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]