2011-07-22 7 views
4

終了時にWIXにアプリケーションを起動させることができましたが、WixShellExecTargetプロパティを使用して2つのカスタムアクションをスケジュールする方法がわかりません。インストーラ出口で複数の起動条件を実行する方法

1つのCAがアプリを起動し、もう1つは別のCAのURLに基​​づくWebページです。適切なチェックボックスをオンにすると、これらの両方が起動されます。

<!-- 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" /> 

この作業を手伝ってくれれば助けてください。ありがとうございます。

乾杯、 ジェイミー

[編集]私は以下の提案を試みたと私はそれが2番目のアクションのために適切な値を設定し得ることはありません。私が提案するように、それは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:\...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. 

答えて

7

はかなり簡単、あなたがWixShellExecTarget「に設定」するために2つの別々のアクションが必要になります - 彼らはちょうど異なる時刻に実行されます。

まず、実行するアクションを設定します。

<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を前のイベントより1大きい値に設定します。

さらに、これらのアクションは、削除と修復時に同じダイアログが表示されるため、インストール中にのみ実行されるように条件付けられています。

実行がオプションの場合は、チェックボックスのステータスに基づいてこれらを条件付けすることもできます。

+0

ありがとうございます、申し訳ありませんが、これほど遠く離れていますので、これをテストする機会はありませんでした。 – Jamie

+3

WixShellExecカスタムアクションは、WixShellExecTargetという重複したプロパティがあるため、1つのMSIで使用できないという問題に対する非常にクールな解決策です。ありがとう! –

+1

私はこれを使用しようとしましたが、決してバージョンでは動作しないようです。 エラー「ControlEvent:ExitDialog/Finish/DoAction/DoExec/NOT Installed」という重複したシンボルが見つかりました。これは、通常、Idが複製されることを意味します。特定のタイプ(ファイル、コンポーネント、機能)のすべての識別子が一意であることを確認してください。 –

関連する問題