[wix-users] Bootstrapper - Change

Ondrej Krc-Jediny ondro.krc at gmail.com
Fri Jun 17 05:30:04 PDT 2016


I have a managed bootstrapper application where I try to implement
Change/Repair/Remove functionality (my .msi support all of them).
I'm having problem with the feature Change functionality. After user
selects/deselect features in my BA, I try to run:

bootstrapApp.Engine.Plan(LaunchAction.Modify);

but the .msi is never run, probably because of 'execute: None' - log:

Planned package: instmsi, state: Present, default requested: Present, ba
requested: Present, execute: None, rollback: None, cache: No, uncache: No,
dependency: Register

As already pointed out in this thread -
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/How-to-modify-MSI-from-the-custom-bootstrapper-td7585752.html
-

in the PlanPackageBegin event, the RequestState is already Present and
execute ActionState is not modifiable.

It does the same when I try

bootstrapApp.Engine.Plan(LaunchAction.Install);

My MsiPackageElement looks like this

<MsiPackage EnableFeatureSelection="yes" SuppressSignatureVerification="no"
SourceFile="installer.msi" Id="instmsi">
  <MsiProperty Name="ADDLOCAL" Value="[FEATURES]"/>
  <MsiProperty Name="REMOVE" Value="[FEATURES_REMOVE]"/>
  <MsiProperty Name="REINSTALL" Value="[FEATURES_REINSTALL]"/>
</MsiPackage>

For the Change functionality, I fill the ADDLOCAL and REMOVE variables
accordingly.

I don't want to run LaunchAction.Repair, because it re-installs already
installed features (which is not how the .msi Change behaves).

Is there any way to ensure that my .msi is run in such case?
Thank You


More information about the wix-users mailing list