【问题标题】:WiX - Launch program from disk?WiX - 从磁盘启动程序?
【发布时间】:2012-05-23 16:07:28
【问题描述】:

我有一个可用的 WiX 3.5 安装程序。安装成功后,我知道如何让 WiX 启动刚刚安装的应用程序了。

但是,我还想在我的安装 CD 中附带一个从 CD 本身运行的小应用程序 - 我希望它在主应用程序安装结束时弹出。从 CD 运行第二个应用程序很重要。

我的第一次尝试 - 在安装结束时启动主应用程序 - 是这样的:

<UI>
    <!--  <UIRef Id="WixUI_Minimal" />  -->
    <Publish Dialog="ExitDialog"
             Control="Finish"
             Event="DoAction"
             Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
</UI>
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch MyInstalledApp" />
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1" />

<Property Id="WixShellExecTarget" Value="[#MyInstalledApp.exe]" />
<CustomAction Id="LaunchApplication"
    BinaryKey="WixCA"
    DllEntry="WixShellExec"
    Impersonate="yes" />

但是,我想将其更改为启动“D:\MyTinyApp.exe”之类的内容。如何使用 WiX 寻址源 CD?

【问题讨论】:

    标签: c# installation wix


    【解决方案1】:

    试一试。假设您要执行的文件与 MSI 文件位于同一位置,您必须先找到它:

    <Property Id='WixShellExecTarget'>
        <DirectorySearch Id='DirSearch' Path='[SOURCEDIR]' Depth='0'>
            <FileSearch Id='FileSearch' Name='MyFileToRun.exe'/>
        </DirectorySearch>
    </Property>
    <CustomAction Id="LaunchApplication"
        BinaryKey="WixCA"
        DllEntry="WixShellExec"
        Impersonate="yes" />
    

    [SourceDir] 是关键。它应该是 MSI 所在的位置。如果找不到文件,您也可以考虑添加一个条件来做一些有用的事情。

    【讨论】:

    • 感谢您的回复,很抱歉延迟回复。如果我尝试这段代码,我会得到“Property/@Id 属性的值,'WixShellExecTarget',不能包含小写字符。由于这是一个搜索属性,它也必须是一个公共属性。这意味着 Property/@Id 值必须是完全大写。”但是,如果我将 Id 和其他所有内容更改为大写,则会出现相同的错误。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多