代码之家  ›  专栏  ›  技术社区  ›  Juozas Kontvainis

如何执行合并模块安装的文件?

  •  0
  • Juozas Kontvainis  · 技术社区  · 15 年前

    我正在使用WIX,并已成功使用自定义操作在安装程序末尾执行已安装的文件,如下所示:

    <CustomAction Id="LaunchAfterInstall" FileKey="foobar.exe" ExeCommand="parameters" Execute="immediate" Impersonate="yes" Return="asyncNoWait" />
    
    <Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION"/>
    
    <UIRef Id="WixUI_InstallDir" />
    <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch Foobar." />
    <UI>
        <Publish Dialog="ExitDialog" Control="Finish" Order="1" Event="DoAction" Value="LaunchAfterInstall">WIXUI_EXITDIALOGOPTIONALCHECKBOX</Publish>
    </UI>
    

    当foobar.exe在同一wxs文件中的组件中时,这很好地工作。然而,我真正想要的是执行一个由合并模块安装的文件。我该怎么做?

    如果这有帮助的话,我可以在合并模块中进行更改。

    2 回复  |  直到 14 年前
        1
  •  0
  •   Juozas Kontvainis    15 年前

    我改变了行动来解决我的问题:

    <CustomAction Id="LaunchAfterInstall" Directory="INSTALLLOCATION" ExeCommand="[INSTALLLOCATION]\foobar.exe" Execute="immediate" Impersonate="yes" Return="asyncNoWait" />
    
        2
  •  0
  •   Rob Mensching    15 年前

    您还可以在生成完成后(即合并模块已合并)在ORCA或MSI中打开合并模块,并查找文件.id。然后在CustomAction中使用文件.id。

    理想情况下,尽管MSI不应该引用合并模块内的内容,因为合并模块应该是独立的。我很感激不是一直这样。:)