如何在安装后启动可执行文件(exe由.msm提供)

时间:2015-06-17 08:33:37

标签: wix custom-action

我按照tutorial中的说明完成了所有操作,但在产品安装完成后我的可执行文件未启动。 我的可执行文件与.msm模块一起提供了一个细微差别,因此在.msi的.wxs文件中我执行以下操作来启动应用程序:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product>
    <!-- I omit here features and elements which are irrelevant to the question-->
    <Feature Id="Configurator" Display="hidden" Level="1">
        <MergeRef Id="MergeConfigurator"/>
    </Feature>
    <UI>
        <UIRef Id="WixUI_Minimal"/>
        <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction"
                 Value="LaunchConfigurator">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
    </UI>
    <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="!(loc.ExitDlgCheckBoxText)" />
    <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1"/>
    <Property Id="WixShellExecTarget" Value="[#SystemConfigurator.exe.81c0fa8f-9a8e-49d8-9dc2-ce01ca163146]" />
    <CustomAction Id="LaunchConfigurator" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
</Product>
<Fragment>
    <DirectoryRef Id="TARGETDIR">
        <Merge Id="MergeConfigurator" SourceFile="$(var.MergeModulesPath)\ConfiguratorSetup_$(var.Platform).msm" DiskId="1" Language="1033"/>
    </DirectoryRef>
</Fragment>
</Wix>

对于Id = WixShellExecTarget的属性,我试图在有和没有GUID的情况下传递值(这是我的可执行文件的.msm的包/ @Id)。 我用Orca打开了我的.msi,看到了我的可执行文件的确切ID(它是SystemConfigurator.exe.81c0fa8f-9a8e-49d8-9dc2-ce01ca163146,这就是我传递这个值的原因)。

但是它错了什么?

我使用/ l * v选项记录了安装过程,并且日志中有一部分:

Action 18:47:57: LaunchConfigurator. 
Action start 18:47:57: LaunchConfigurator.
MSI (c) (54:68) [18:47:58:106]: Invoking remote custom action. DLL: C:\Users\AAGENO~1\AppData\Local\Temp\MSIB233.tmp, Entrypoint: WixShellExec
MSI (c) (54:08) [18:47:58:106]: Cloaking enabled.
MSI (c) (54:08) [18:47:58:106]: Attempting to enable all disabled privileges before calling Install on Server
MSI (c) (54:08) [18:47:58:106]: Connected to service for CA interface.
MSI (c) (54!04) [18:47:58:476]: Note: 1: 2715 2: SystemConfigurator.Client.exe.81c0fa8f-9a8e-49d8-9dc2-ce01ca163146 
MSI (c) (54!04) [18:47:58:476]: Note: 1: 2715 2: SystemConfigurator.Client.exe.81c0fa8f-9a8e-49d8-9dc2-ce01ca163146 
Action ended 18:47:58: LaunchConfigurator. Return value 3.
MSI (c) (54:34) [18:47:58:476]: Note: 1: 2205 2:  3: Error 
MSI (c) (54:34) [18:47:58:476]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 2896 
DEBUG: Error 2896:  Executing action LaunchConfigurator failed.

1 个答案:

答案 0 :(得分:0)

错误2715表示您正在使用的文件密钥实际上不在文件表中。假设它指的是SystemConfigurator.exe.81c0fa8f-9a8e-49d8-9dc2-ce01ca163146我会用Orca打开MSI文件并查看它是否是正确的值并记住Windows Installer proiperties区分大小写,所以如果它真的如此是大写然后使用大写。确保它确实是一个破折号,而不是一个下划线。