0
votes

I'm working on an InstallShield project of type Basic MSI. There's a Readme checkbox on the final SetupComplete dialog. I tried to add a condition REMOVE<>"ALL" in the Show condition for the checkbox and associated label. It's not working to prevent the Readme checkbox from appearing during an uninstall. I added a textbox bound to the REMOVE property to the same dialog and it's empty after an uninstall.

  1. Why is the REMOVE property empty during SetupComplete, even after uninstall?
  2. What is a good way to prevent the readme box from appearing after an uninstall?
2

2 Answers

0
votes

Why is the REMOVE property empty during SetupComplete, even after uninstall?

REMOVE=ALL is not available before installvalidate sequence. More on that is over here: Conditioning Actions to Run During Removal

What is a good way to prevent the readme box from appearing after an uninstall?

Your approach is correct. Set for your checkbox and corresponding text Show condition to NOT Installed (First time installation). More on different types of conditions see Common MSI Conditions Cheat Sheet

0
votes

I learned from http://www.itninja.com/question/remove-the-setupcompletesuccess-dialog that the SetupCompleteSuccess dialog is in its own sequence that does not receive many variables that were available in other sequences. From that page, someone commented:

I believe the execution order of an MSI during a standard installation looks something like this:

InstallUISequence (LaunchConditions -> ExecuteAction) -> Immediate "InstallExecuteSequence" (LauchConditions -> InstallFinalize) -> Deferred "InstallExecuteSequence" (InstallInitialize -> InstallFinalize) -> Immediate "InstallExecuteSequence" (InstallFinalize -> End) -> InstallUISequence (ExecuteAction -> End)

It would seem that properties set during "InstallExecuteSequence" are not available in the final (post-"ExecuteAction") part of the "InstallUISequence".

That page also suggests using the _IsMaintenance property will work as an alternative to the REMOVE property that isn't available at that stage. So I'm using _IsMaintenance <> "Remove"