2010-02-16 91 views
2

我正在使用具有“安装后启动应用程序”复选框的WiX进行安装。 目标是对设置复选框以及取消复选框的反应。如果复选框已设置,我需要运行一个应用程序。如果复选框没有设置,我需要运行相同的应用程序,但使用命令行参数。WiX:无法处理“在安装后启动应用程序”复选框= 0

这是我的WiX脚本的一部分。

<CustomAction Id="StartConfigManagerOnExit" 
       FileKey="ParamsShower.exe" 
       ExeCommand="" 
       Execute="immediate" 
       Impersonate="yes" 
       Return="asyncNoWait" /> 
<CustomAction Id="StartUpgradeConfigOnExit" 
       FileKey="ParamsShower.exe" 
       ExeCommand="/upgrade" 
       Execute="immediate" 
       Impersonate="yes" 
       Return="asyncNoWait" /> 
<UI> 
    <Publish Dialog="ExitDialogEx" 
      Control="Finish" 
      Order="1" 
      Event="DoAction" 
      Value="StartConfigManagerOnExit">LAUNCHAPPONEXIT = 1</Publish> 
    <Publish Dialog="ExitDialogEx" 
      Control="Finish" 
      Order="1" 
      Event="DoAction" 
      Value="StartUpgradeConfigOnExit">LAUNCHAPPONEXIT = 0</Publish> 
    <Publish Dialog="ExitDialogEx" 
      Control="Finish" 
      Event="EndDialog" 
      Value="Return" 
      Order="999">1</Publish> 

    <Dialog Id="ExitDialogEx" 
      Width="370" 
      Height="270" 
      Title="[ProductName] Setup"> 
     <Control Id="LaunchCheckBox" 
       Type="CheckBox" 
       X="135" 
       Y="190" 
       Width="220" 
       Height="40" 
       Property="LAUNCHAPPONEXIT" 
       Hidden="yes" 
       CheckBoxValue="1" 
       Text="Launch an app"> 
      <Condition Action="show">NOT Installed</Condition> 
     </Control> 
    </Dialog> 
    <InstallUISequence> 
     <Show Dialog="ExitDialogEx" 
      OnExit="success" /> 
    </InstallUISequence> 
    <AdminUISequence> 
     <Show Dialog="ExitDialogEx" 
       OnExit="success" /> 
    </AdminUISequence> 
</UI> 

当设置LaunchCheckBox时,安装程​​序启动应用程序。但是如果没有设置复选框,它不会运行它。

回答

4

我找到了答案。看起来像复选框属性不等于0时,未选中。只需将条件“LAUNCHAPPONEXIT = 0”更改为“NOT LAUNCHAPPONEXIT”即可解决问题。

设为默认:

<Property Id="LAUNCHAPPONEXIT" Value="1" /> 

然后更正条件(与萨沙的评论校正):

<Publish Dialog="ExitDialogEx" Control="Finish" Order="1" Event="DoAction" Value="StartConfigManagerOnExit">LAUNCHAPPONEXIT</Publish> 
<Publish Dialog="ExitDialogEx" Control="Finish" Order="1" Event="DoAction" Value="StartUpgradeConfigOnExit">NOT LAUNCHAPPONEXIT</Publish> 
0

您需要添加初始化为你的财产自定义操作,

<CustomAction ID="InitLAUNCHAPPONEXIT" 
       Property="LAUNCHAPPONEXIT" 
       Value="0" 
       Return="check"/> 

,然后显示退出对话框之前添加到InstallUISequence,或者干脆你的属性添加到产品<Property Id="LAUNCHAPPONEXIT" Value="0" />

+0

我已将设置为。 现在,如果复选框已设置,则启动StartUpgradeConfigOnExit(LAUNCHAPPONEXIT = 0)。如果复选框未设置,则不发生任何事情。 – Maxs 2010-02-16 12:30:12

3

一个复选框没有任何价值可言的时候不加以控制,因此而不是使用1/0符号,你可以简单地使用

LAUNCHAPPONEXIT 

Not LAUNCHAPPONEXIT 
相关问题