Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

How to force setup.exe while allowing uninstall, repair from ARP

11 views
Skip to first unread message

Rob

unread,
May 14, 2008, 9:18:00 PM5/14/08
to
I'm trying to allow our MSI file to be run for uninstalls and repairs from
the ARP while, at the same time, forcing use of the bootstrap program for all
other types of installs. I have set up a launch condition as follows:
(REMOVE AND (REMOVE = ALL)) OR (REINSTALL AND (REINSTALL = ALL)) OR
(BOOTSTRAP AND (BOOTSTRAP = 1))

Unfortunately, that doesn't seem to work. I've tried running an uninstall
from the command line to simulate what happens with the ARP, but the only way
I can get it to run is if I include the BOOTSTRAP property. It's as if the
MSI is treating that second OR as another AND.

Dennis Bareis

unread,
May 14, 2008, 11:11:30 PM5/14/08
to

Yes it is a major pain that Windows Installer doesn't log the evaluation of a condition,
one problem is that you say ALL not "ALL". I doubt you need the property name followe by the AND's .

Bye,
Dennis
Dennis Bareis [Microsoft MVP] (dba...@KillSpam.gmail.com)
http://dennisbareis.com/
Freeware Windows Installer creation tool (+ "ORCA automation"):
http://makemsi.dennisbareis.com/

Rob

unread,
May 15, 2008, 1:05:00 PM5/15/08
to
I've tried it with and without quotes around the ALL. (And the documentation
of the REMOVE property says "a package author may use a conditional
expression to check whether REMOVE=ALL." Note the lack of quotes.)

As for the property names before the ANDs, I've found that if I don't have
them, my equivalence checks (BOOTSTRAP = 1, etc.) tend to come out TRUE if
the property is not defined, which is not what I want.

Rob

unread,
May 15, 2008, 2:07:03 PM5/15/08
to
OK, I don't know what was going on before, but I tried it without the
property names followed by the ANDs, and the equivalences test as FALSE now
(as I would expect). I still can't get an uninstall or repair to go ahead
without also putting BOOTSTRAP=1 on the command line, though.

Dennis Bareis

unread,
May 16, 2008, 3:35:14 AM5/16/08
to
Hi,

Are you logging this? What are the values of the properties:
http://makemsi-manual.dennisbareis.com/logging.htm

Bye,
Dennis

Rob

unread,
May 16, 2008, 2:09:03 PM5/16/08
to
When I use the following command line:
msiexec.exe /x "my product.msi" REMOVE=ALL

Property(S): REMOVE = ALL (this line copied from the log file)
REINSTALL and BOOTSTRAP are not set.

Dennis Bareis

unread,
May 16, 2008, 7:52:46 PM5/16/08
to
Hi,

On Fri, 16 May 2008 11:09:03 -0700, Rob <R...@discussions.microsoft.com> wrote:

>When I use the following command line:
> msiexec.exe /x "my product.msi" REMOVE=ALL
>
>Property(S): REMOVE = ALL (this line copied from the log file)
>REINSTALL and BOOTSTRAP are not set.

Which means:

>> (REMOVE AND (REMOVE = ALL))

IS PROBABLY FALSE (at least I think the double quotes are required)

>> OR (REINSTALL AND (REINSTALL = ALL))

IS FALSE

>> OR (BOOTSTRAP AND (BOOTSTRAP = 1))

IS FALSE

The log will also show whether or not the custom action was called, double check
as it could be the custom action is starting but failing. Also properties can change
value during install so worth checking for this also.

You need to start from the bare minimum condition and work back to what you need,

I'd reduce the condition to: REMOVE= "ALL" or ALL if you want to try then add more and more
until it stops working during uninstall....

Rob

unread,
May 16, 2008, 10:21:00 PM5/16/08
to
Adding quotes around the ALLs did the job. (Microsoft's going to have to fix
its documentation so newbies like me don't keep getting confused. In the
documentation for the REMOVE property, it states:
To determine whether a product has been set to be completely
uninstalled, a package author may use a conditional expression to check
whether REMOVE=ALL.
(Notice that there are no quotes around ALL.))
0 new messages