Windows WiX无条件执行应用程序

Windows WiX无条件执行应用程序,windows,installation,wix,custom-action,Windows,Installation,Wix,Custom Action,大家好 我的问题有两方面。我有一个一直在工作的WiX项目,任务是让它执行程序执行,而不管用户按下“取消”、安装被中止(通过现有版本)或用户成功完成安装 我目前使用内置的diaglog系统: <UIRef Id="WixUI_InstallDir" /> 我目前已经非常成功地在安装完成后执行应用程序。困难在于应用程序位于安装程序的同一位置,我不能保证它会在哪里。因此,在安装成功后,我使用以下方法执行程序: <InstallExecuteSequence>

大家好

我的问题有两方面。我有一个一直在工作的WiX项目,任务是让它执行程序执行,而不管用户按下“取消”、安装被中止(通过现有版本)或用户成功完成安装

我目前使用内置的diaglog系统:

    <UIRef Id="WixUI_InstallDir" />

我目前已经非常成功地在安装完成后执行应用程序。困难在于应用程序位于安装程序的同一位置,我不能保证它会在哪里。因此,在安装成功后,我使用以下方法执行程序:

<InstallExecuteSequence>
  <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
  <RemoveExistingProducts After="InstallInitialize" />
  <Custom Action="PropertyAssign"  Before="InstallFinalize">NOT Installed</Custom>
  <Custom Action="LaunchFile" After="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>


    <CustomAction Id='PropertyAssign' Property='PathProperty' Value='[SourceDir][DRIVEREXEC]' />
    <CustomAction Id="LaunchFile" Property="PathProperty" ExeCommand='/S' Return="asyncNoWait" />

新产品发现
未安装
未安装
这两个自定义操作用于在安装完成后执行应用程序。因此,当程序存在时,我无法分配两个自定义操作。OnExit=“error”在两个自定义操作具有相同设置时引发异常

如何无条件地执行位置未知但假定位于安装程序的同一目录中的应用程序


感谢大家抽出时间和友好的回复

您可以查看有关安装后如何运行应用程序的WiX文档:。这将为您提供指向WiX UI对话框集的指针,您可以在必要时对其进行调整


此外,SourceDir是一个非常棘手的用法:。理想情况下,您应该启动安装的应用程序,而不是从媒体启动。

Rob,谢谢您的回复。不幸的是,我需要处理一个或多个“可能”随媒体打包的可执行文件。如果他们是,我必须运行他们。为了解决这个问题,我在完成时使用了SourceDir,并使用了一个参数来设置我的位置。我的结局是在取消、中止等情况下——可执行文件仍然处于激活状态。您的建议提到了如何在任何情况下显示复选框(abort--etc),但没有告诉我如何告诉安装程序它在哪里。很抱歉,我在这方面还是新手,我可能错过了它。我没有关注你问题的这一部分,“但它没有告诉我如何告诉安装程序它在哪里”。你能澄清一下吗?很抱歉耽搁了,我非常感谢你给我的帮助和时间。在某种程度上,我需要安装程序自我意识(关于它的位置)。安装程序需要知道它在磁盘上的位置。这就是我使用SourceDir的原因。(安装程序说)我知道我位于c:\temp\install,现在从c:\temp\install执行installer2。另一方面,如果有人将安装程序移动到c:\place,我希望安装程序随后转到c:\place并尝试从c:\place执行installer2。