0
このカスタムアクションは失敗します。 cmd /c blah blah & pause
とWIXカスタムアクションのパスを解決する方法
<CustomAction Id="SetIntegrityLevel" Return="check"
Directory="TARGETDIR" Impersonate="no" Execute="deferred"
ExeCommand="cmd /c icacls UiProxy.exe /SetIntegrityLevel High & pause" />
事業が失敗したコマンドライン操作で何が起こったのかについて、いくつかの可視性を取得するための私の小さなトリックです。
UiProxy.exe: The system cannot find the file specified.
Successfully processed 0 files; Failed processing 1 files
Press any key to continue . . .
これは少し驚きです。 UiProxy.exeはTARGETDIRで指定されたフォルダにあります。
INSTALLDIRシンボルをコマンド文字列に解決する方法はありますか?私はこのようなものを作り出す必要があります。私は、[INSTALLDIR]私は、シンボルが解決必要入れている
<CustomAction Id="SetIntegrityLevel" Return="check"
Directory="TARGETDIR" Impersonate="no" Execute="deferred"
ExeCommand="icacls "[INSTALLDIR]UiProxy.exe" /SetIntegrityLevel High" />
:
icacls "C:\Program Files (x86)\UiProxy\UiProxy.exe" /SetIntegrityLevel High
もちろん、私は、明示的にこのような何かを引用符を配置する必要があります。問題はこれを表現する方法です。
一般に、インストールされたファイルの場所(インストーラによってUIProxy.exeがインストールされています)を使用する場合は、[#UIProxy.exeのファイルID]を使用してコンポーネントのフルパスを指定します。これは、ショートカットでよく使用されます。 –
私はこれを試して、あなたは正しいです。より保守的ですので、それがより良い方法である理由を説明する答えとしてそれを提案し、私はそれを受け入れます。 –
@PeterWoneこのカスタムアクションを実行する順序を提案できますか。 InstallFiles(4000)の後に置いても、必要なプログラムがインストールされていないと表示されます。 – vijiboy