WIX: Não consigo lidar com a caixa de seleção “Iniciar um aplicativo após instalação” = 0

StackOverflow https://stackoverflow.com/questions/2272275

  •  20-09-2019
  •  | 
  •  

Pergunta

Estou fazendo uma instalação com o WIX que possui uma caixa de seleção "Lançar um aplicativo após a instalação". O objetivo é ter uma reação ao estabelecer a caixa de seleção, bem como desativar a caixa de seleção. Caso a caixa de seleção esteja definida, preciso executar um aplicativo. Caso a caixa de seleção não esteja definida, preciso executar o mesmo aplicativo, mas com o argumento da linha de comando.

Aqui está uma parte do meu script 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>

Uma instalação inicia o aplicativo quando o iniciamento do iniciativo está definido. Mas ele não o executa caso a caixa de seleção não esteja definida.

Foi útil?

Solução

Eu encontrei uma resposta. Parece que a propriedade da caixa de seleção não é igual a 0 quando desmarcada. Basta alterar a condição "LaunchApPONEXIT = 0" com "não iniciar openPonexit" resolve a situação.

Tornar padrão:

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

Em seguida, corrija as condições (corrigidas com o comentário de Sascha):

<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>

Outras dicas

Uma caixa de seleção não tem valor quando desmarcado, então, em vez de usar a notação 1/0, você pode simplesmente usar

LAUNCHAPPONEXIT

e

Not LAUNCHAPPONEXIT

Você precisa adicionar uma ação personalizada inicializa para sua propriedade,

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

e depois adicione -o para instalar a caixa de diálogo de saída ou simplesmente adicione sua propriedade ao produto <Property Id="LAUNCHAPPONEXIT" Value="0" />.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top