A feature's merge module has a deferred custom action to run an executable 'installed with product'. This shall only be done if the feature is installed. So there is a condition 'Not Installed' inside the ModuleInstallExecuteSequence table.
Nevertheless, if the feature is deselected during setup, the installation exits with error 2753.
Trying to run the exe as 'path referencing a directory' with 'Working directory' = INSTALLDIR and 'Filename & command' = executable name does not do anything, independend of the module's installation status.
The log says:
MSI (s) (B8:F0) [10:10:45:890]: Executing op: ActionStart(Name=myexe.3415C1AE_0BE3_4D4F_9320_A2A35460C8FC,,)
MSI (s) (B8:F0) [10:10:45:890]: Executing op: CustomActionSchedule(Action=myexe.3415C1AE_0BE3_4D4F_9320_A2A35460C8FC,ActionType=1250,Source=C:\Program Files\Company\Product\,Target=my.exe,)
Platform: IS 10.5
Thanks for any hint how to correct or work around this problem.
This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Merge Module deferred custom exe action condition
Started by
standre
, Aug 03 2006 09:20
2 replies to this topic
Posted 03 August 2006 - 10:27
Solved.
As directory table based exe did not work, I used property based.
Merge Module Custom Actions:
'New Set Property' MySetExecutable
sets property 'EXE' to '[INSTALLDIR]my.exe'
Synchronous
Immediate execution
'New Exe / Path in property' MyRunExe
runs executable from property 'EXE'
Asynchronous
Deferred execution
ModuleInstallExecuteSequence:
MySetExecutable
After InstallInitialize
Condition: NOT REMOVE
MySetExecutable
Before InstallFinalize
Condition: NOT REMOVE
Now my.exe is run when installed during the first run of the setup, or installed later. If not selected for installation or if deinstalled, nothing unexpected happens.
As directory table based exe did not work, I used property based.
Merge Module Custom Actions:
'New Set Property' MySetExecutable
sets property 'EXE' to '[INSTALLDIR]my.exe'
Synchronous
Immediate execution
'New Exe / Path in property' MyRunExe
runs executable from property 'EXE'
Asynchronous
Deferred execution
ModuleInstallExecuteSequence:
MySetExecutable
After InstallInitialize
Condition: NOT REMOVE
MySetExecutable
Before InstallFinalize
Condition: NOT REMOVE
Now my.exe is run when installed during the first run of the setup, or installed later. If not selected for installation or if deinstalled, nothing unexpected happens.
Posted 03 August 2006 - 17:00
Properties like Installed and REMOVE are global for the whole package. So 'Not Installed' is true for a first time install, regardless of feature selection. REMOVE is true for any install where a feature is being removed. This micht be a full uninstall, or just some feature being unselected in Modify mode. Some feature means this could be any feature, not just the feature to which your merge module is connected.
You may get better results by basing your conditions on install and action states of a component in your module (see information at the end of help topic "conditional statement syntax")
You may get better results by basing your conditions on install and action states of a component in your module (see information at the end of help topic "conditional statement syntax")
Stefan Krüger
InstallSite.org twitter facebook