我有一个在WiX 3.6中创建的MSI显然安装了各种东西,并创建了一个我的MSI实际上没有安装的exe的快捷方式(我们确实知道exe位于特定的文件夹中,因为它是由一个单独安装的MSI,这是我的MSI所需的预先请求.我们创建的快捷方式传递了一些参数,这些参数实际上告诉exe使用我们刚刚安装的东西.这一切都运行正常,但我现在希望MSI使用与我们在快捷方式中使用的参数相同的参数自动运行exe.
我尝试了这篇文章 - http://wixtoolset.org/documentation/manual/v3/howtos/ui_and_localization/run_program_after_install.html,但它假设您要运行刚刚安装的exe并且似乎不使用exe参数.
我也试过使用自定义动作 -
<CustomAction Id="RunMainApp"
Directory="FREDFOLDER"
ExeCommand="[FREDFOLDER]Fred.exe -SBDSingleApp -SBDSplash="MySplash.bmp""
Execute="commit"
Return="ignore"/>
<InstallExecuteSequence>
<Custom Action="RunMainApp" Before="InstallFinalize" />
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)
这是更有希望的 - 它运行exe,但在实际安装完成之前这样做 - 这显然是不正确的.
说实话,我不困扰,如果围绕具有UI作为第一个例子 - 因为已经显示的MSI将在安静模式下运行时不使用向导90%.
我正在使用WiX 3.6(但如果需要可以升级到3.8)并且有一个用BURN编写的启动器,这几乎可以完成我需要的一切,除了这个问题; 我似乎无法破解.
我有两个变量; Product_XYZ和Product_ABC.第一个包含通过注册表搜索填充的文件夹路径(因此如果搜索没有找到我的reg密钥,它可能是空白的),另一个是硬编码的(即"[ProgramFilesFolder]\ABC").
我只是(?)想要将InstallFolder变量(通过Options按钮显示在UI中)设置为Product_XYZ变量中的值(如果它不是空白).如果它是空白的,我想将InstallFolder设置为Product_ABC中的值.
即
If Product_XYZ <> "" then
InstallFolder = [Product_XYZ]
else
InstallFolder = [Product_ABC]
endif
Run Code Online (Sandbox Code Playgroud)
但显然使用BURN逻辑!!
谁能帮帮我吗 ?
干杯,
克里斯.