0

インストール中に実行する .exe ファイルがあります。msi ファイルがブートストラップ (メインの msi ファイルを起動する .exe ファイル) によって起動された場合は正常に実行されますが、msi 自体によって起動された場合は正しく実行されません。私のブートストラッパーは起動時に権限を取得し、権限のある cmd.exe で msi を実行すると .exe ファイルがうまく実行されるため、この問題は権限に関連しているようです。

コントロール パネルの ARP メニューからメンテナンス モードに入ると、実際の問題が発生します。.exe ファイルは、一部の機能のアクション状態に従って実行されます。ブートストラッパーで起動した独自のmsi(権限あり)からメンテナンスモードに入るとうまく実行されますが、コントロールパネルのARPメニューからメンテナンスモードに入るとうまく実行されません。

コントロール パネルの ARP メニューからメンテナンス モードに入ったときに、同じように実行されるようにしたい。

以下は私のコードの一部です。

<CustomAction Id="CA1" BinaryKey="file.exe" ExeCommand="" Execute="deferred" Return="asyncNoWait" />
...
<Custom Action="CA1" Before="InstallFinalize"><![CDATA[&Feat1=3]]></Custom>

ありがとうございました。

4

2 に答える 2

1

カスタム アクションは、InstallInitialize と InstallFinalize の間の deferred で既にスケジュールされています。不足しているのは、'no' に設定する必要がある Impesonate 属性です。これにより、システム コンテキストで管理者特権で実行されます。現在、インストールを開始したユーザーになりすましており、そのプロセスが昇格されていない場合、EXE は昇格されません。

また、EXE を呼び出すには、WiX Quiet Execute Custom Actionを参照します。最後に、Windows インストーラーのカスタム アクションのインストール フェーズとスクリプト内実行オプションを読んで理解してください。

于 2013-09-04T14:59:57.600 に答える