如何在安装程序退出时执行多个启动条件 [英] How to execute multiple launch conditions on installer exit

查看:115
本文介绍了如何在安装程序退出时执行多个启动条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我设法让WIX在退出时启动我的应用程序,但不确定如何使用 WixShellExecTarget 属性安排两个自定义操作。

I've managed to get WIX to launch my application on exit, but not sure how to schedule two custom actions using the WixShellExecTarget property.

一个CA将启动一个应用程序,另一个是基于另一个CA的URL的网页。

One CA is to launch an app and the other is a web page based on a url from another CA. These are both launched if the appropriate checkboxes are checked.

<!-- Custom action for executing app -->
    <Property Id="WixShellExecTarget" Value="[#Application.exe]" />
    <CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />

    <!-- Custom action for executing Webbrowser -->

    <Property Id="???" Value="[CONFIGWIZARDURL]" />
    <CustomAction Id="LaunchConfigWizard" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />

您可以给我任何帮助以完成此工作的任何帮助。

Any help you could give me to get this working would be greatly appreciated.

干杯,
Jamie

Cheers, Jamie

我尝试了下面的建议,但我没有设置第二个动作的适当值。按照我的建议,它不会转到www.google.com:

I've tried the suggestion below and I don't get it setting the appropriate value for the second action. It doesn't go to www.google.com as I suggest:

<Publish Dialog="MyExitDialog" Control="Finish" Event="DoAction" Value="SetExec1"><![CDATA[NOT Installed]]></Publish>
        <Publish Dialog="MyExitDialog" Control="Finish" Event="DoAction" Value="DoExec"><![CDATA[LAUNCHCAPTURE = "1" AND NOT Installed]]></Publish>

        <Publish Dialog="MyExitDialog" Control="Finish" Event="DoAction" Value="SetExec2"><![CDATA[NOT Installed]]></Publish>
        <Publish Dialog="MyExitDialog" Control="Finish" Event="DoAction" Value="DoExec"><![CDATA[LAUNCHCONFIGWIZARD = "1" AND NOT Installed]]></Publish>



Property(S): LAUNCHCONFIGWIZARD = 1
MSI (s) (5C:DC) [14:41:02:119]: PROPERTY CHANGE: Adding CONFIGWIZARDURL property. Its value is 'http://www.google.com'.

MSI (c) (DC:60) [14:41:16:166]: PROPERTY CHANGE: Adding WixShellExecTarget property. Its value is 'C:\...Application\MyApplication.exe'.
Action ended 14:41:16: SetExec1. Return value 1.
MSI (c) (DC:60) [14:41:16:181]: Doing action: DoExec
Action 14:41:16: DoExec. 
Action start 14:41:16: DoExec.

MSI (c) (DC:60) [14:41:16:181]: Creating MSIHANDLE (3) of type 790542 for thread 11104
MSI (c) (DC:E0) [14:41:16:181]: Invoking remote custom action. DLL: C:\Temp\MSIA7A.tmp, Entrypoint: WixShellExec
MSI (c) (DC!8C) [14:41:16:244]: Creating MSIHANDLE (4) of type 790541 for thread 10636
MSI (c) (DC!8C) [14:41:16:244]: Creating MSIHANDLE (5) of type 790531 for thread 10636
MSI (c) (DC!8C) [14:41:16:244]: Closing MSIHANDLE (5) of type 790531 for thread 10636
MSI (c) (DC!8C) [14:41:16:447]: Closing MSIHANDLE (4) of type 790541 for thread 10636
MSI (c) (DC:E0) [14:41:16:447]: Closing MSIHANDLE (3) of type 790542 for thread 11104
Action ended 14:41:16: DoExec. Return value 1.
MSI (c) (DC:60) [14:41:16:447]: Doing action: SetExec2
Action 14:41:16: SetExec2. 
Action start 14:41:16: SetExec2.
MSI (c) (DC:60) [14:41:16:447]: PROPERTY CHANGE: Deleting WixShellExecTarget property. Its current value is 'C:\...Application\MyApplication.exe'.
Action ended 14:41:16: SetExec2. Return value 1.
Action ended 14:41:16: MyExitDialog. Return value 1.


推荐答案

很简单,您需要两个单独的操作来设置 WixShellExecTarget -它们将在不同的时间运行。

Fairly straightforward, you'll need two separate actions to "set" WixShellExecTarget - they'll just run at different times.

首先,您ll设置将要运行的操作。

First, you'll setup the actions that are going to be run.

<CustomAction Id="SetExec1" Property="WixShellExecTarget" Value="[#Application.exe]" />
<CustomAction Id="SetExec2" Property="WixShellExecTarget" Value="[CONFIGWIZARDURL]" />
<CustomAction Id="DoExec" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" Return="ignore" />

现在您要安排这些操作实际运行,在此示例中,我将所有最后安装对话框上的完成按钮进行操作。当我们发布到 Control 元素时,WiX会自动将 Publish / @ Order 设置为上一个事件。

Now you want to schedule those actions to actually run, in this example I'm tying all of the actions to the Finish button on the final installation dialog. As we're publishing to a Control element, WiX will automatically set Publish/@Order to one greater than the previous event.

此外,所有这些操作的条件是仅在安装期间执行,因为在删除和修复过程中会显示此对话框。

In addition, all these actions are conditioned to only execute during installation as this same dialog is displayed during removal and repair.

如果执行是可选的,您可能还希望根据复选框的状态进行调整。

You'll likely also want to condition these based on the status of your checkboxes if execution is optional.

<UI>
    <!-- Publish set/do for first action -->
    <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="SetExec1">
        <![CDATA[NOT Installed]]>
    </Publish>
    <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="DoExec">
        <![CDATA[NOT Installed]]>
    </Publish>

    <!-- Publish set/do for second action -->
    <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="SetExec2">
        <![CDATA[NOT Installed]]>
    </Publish>
    <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="DoExec">
        <![CDATA[NOT Installed]]>
    </Publish>
</UI>

这篇关于如何在安装程序退出时执行多个启动条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆