2013-10-09 64 views
8

私はwixを使ってインストールされているプログラムを使用しています。 (関連性があるかどうか分かりませんが、C#プログラムです)Wix - インストール後にexeファイルをインストールしたディレクトリから実行するには?

msiファイルによってインストールされたexeファイルを実行しますが、ユーザーがインストールパスを選択したため、インストールの場所がわかりません。

たとえば、ユーザーが選択した場所からexeファイルを実行する方法について質問したいと思います。

質問の一部ではありませんが、私は初心者のために絶対的な場所からexeファイルを実行する例を見てうれしく思います。

答えて

10

これは、WIX拡張機能の助けを借りて達成できます。あなたは上のWiXを使用している場合は、プロジェクト

に拡張ライブラリを追加します。太字/斜体ののテキストは、下記のおEXE :)

ステップ1の正確な位置を求める場合を処理します

-ext WixUIExtension -ext WixUtilExtension 

Visual Studioを使用している場合は、[参照の追加]ダイアログを使用して拡張子を追加することができます:あなたはろうそくやライトのコマンドラインに以下を追加する必要があるコマンドライン

Right click on your project in Solution Explorer and select Add Reference... 
Select the WixUIExtension.dll assembly from the list and click Add 
Select the WixUtilExtension.dll assembly from the list and click Add 
Close the Add Reference dialog 

ステップ2:あなたのインストーラ

WiXの最小限のUIシーケンスはオプションのチェックボックスで、完成してダイアログを含んダイアログの基本的なセットを含んにUIを追加します。プロジェクトにシーケンスを含めるには、<Product>要素内に次のスニペットを追加します。 、WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXTプロパティは、標準的なUIシーケンス、セットにより提供される

<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch My Application Name" /> 

<UI> 
    <UIRef Id="WixUI_Minimal" /> 
</UI> 

はどこ<Product>素子内部スニペット以下が含まれるインストーラの最後の画面にチェックボックスを表示しますチェックボックスを表示し、指定された値をチェックボックスのラベルとして使用します。

ステップ3:

カスタムアクション要素を使用してWiXのプロジェクトに含まれているカスタムアクションを含めます。アプリケーションの実行は、WixShellExecTargetカスタムアクションで実行されます。

<Property Id="WixShellExecTarget" Value="[#myapplication.exe]" /> 
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" /> 

Property要素がインストールされたアプリケーションの場所にWixShellExecTargetを設定します:カスタムアクションについては、Windowsインストーラを言うと、そのプロパティを設定するには、どこか<Product>要素内のプロジェクトに以下が含まれます。 WixShellExecTargetは、実行するファイルの場所にWixShellExecカスタムアクションが期待するプロパティIDです。*

Valueプロパティは、ID myapplication.exeとファイルの フルインストールパスをルックアップするためのWiXを伝えるために、特別な#文字を使用しています。


のCustomAction要素は、インストーラのアクションを含みます。一意のIDが与えられ、BinaryKeyおよびDllEntryプロパティは、カスタムアクションのアセンブリとエントリポイントを示します。 Impersonateプロパティは、カスタムアクションをインストールユーザーとして実行するようにWindowsインストーラに指示します。

ステップ4:単純にカスタムアクションを含むカスタムアクション

の引き金を引いて、ステップ3のように、それが実行させるのに十分ではありません。カスタムアクションをトリガする必要がある場合は、Windowsインストーラにも通知する必要があります。これは、<Publish>要素を使用して、ユーザーがUIダイアログの最終ページの[Finished]ボタンをクリックしたときに実行されるアクションにそれを追加することによって行われます。公開要素は、ステップ2からの要素の内側に含まれており、このようになりますする必要があります。

<Publish Dialog="ExitDialog" 
    Control="Finish" 
    Event="DoAction" 
    Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish> 

ダイアログプロパティは、この場合ExitDialogには、カスタムアクションが接続されるダイアログを指定します。 Controlプロパティは、ダイアログの[完了]ボタンがカスタムアクションをトリガすることを指定します。 Eventプロパティは、ボタンがクリックされたときにカスタムアクションが実行され、Valueプロパティがステップ3に含まれていたカスタムアクションを指定することを示します。エレメントの条件は、ステップ2のチェックボックスがチェックされていない限りアプリケーションは実際にインストールされました(削除または修復とは対照的に)。

詳細については、このリンクをクリックしてください。 How to run exe after install。私は同じ回答を探している人の利益のためにここにそれをコピーしました。

+0

この質問に回答してみませんか:(新しい) http://stackoverflow.com/questions/19355537/wix-setting-install-folder-correctly –

+1

これを試してもインストーラは存在しません。インストーラを終了しようとすると、閉じるボタンをクリックするたびに新しいアプリケーションが起動しますが、終了することはありません。 –

関連する問題