wix – 如何在安装程序退出时执行多个启动条件
发布时间:2020-12-15 21:21:22 所属栏目:安全 来源:网络整理
导读:我已经设法让WIX在退出时启动我的应用程序,但不知道如何使用Wix ShellExecTarget属性安排两个自定义操作. 一个CA是启动应用程序,另一个是基于来自另一个CA的URL的网页.如果选中相应的复选框,则会启动这些选项. !-- Custom action for executing app -- Prope
我已经设法让WIX在退出时启动我的应用程序,但不知道如何使用Wix
ShellExecTarget属性安排两个自定义操作.
一个CA是启动应用程序,另一个是基于来自另一个CA的URL的网页.如果选中相应的复选框,则会启动这些选项. <!-- 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" /> 任何帮助你可以让我让这个工作将不胜感激. 干杯, [编辑]我已经尝试了下面的建议,但我没有为第二个动作设置合适的值.它没有像我建议的那样去www.google.com: <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:...ApplicationMyApplication.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:TempMSIA7A.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:...ApplicationMyApplication.exe'. Action ended 14:41:16: SetExec2. Return value 1. Action ended 14:41:16: MyExitDialog. Return value 1. 解决方法
相当简单,你需要两个单独的动作来“设置”WixShellExecTarget – 它们只会在不同的时间运行.
首先,您将设置要运行的操作. <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设置为比上一个事件更大的一个. 此外,所有这些操作都只能在安装期间执行,因为在删除和修复期间会显示相同的对话框. 如果执行是可选的,您可能还希望根据复选框的状态来调整这些条件. <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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |