2

そのため、アプリケーションのインストールが完了した後 (実際には、インストール中にインストールされたファイルと対話しないため、セカンダリ アプリケーションがいつ実行されるかは問題ではありません)、別のプログラムを実行しようとしています。アプリケーションにバンドルされています。関連するコード (さまざまなものを「...」に置き換えたもの):

<directory ...>
  <component ...>
  <File Id="IDINST" ... />
  </component>
</directory>
...
<CustomAction Id="IDACTION" FileKey="IDINST" ExeCommand="..." Return="ignore" />
...
<InstallExecuteSequence>
  <Custom Action="IDACTION" After="CostFinalize" />
</InstallExecuteSequence>

ディレクトリを確認したところ、ファイルは期待どおりの場所にありましたが、インストール プロセス後に実行されませんでした。実際には、そのファイルをインストールすることさえ望んでおらず、実行してから削除するだけです。しかし、私は今のところそれを無視します。とにかく、ダイアログの後にアクションをトリガーする例をいくつか見てきましたが、現在使用しているので、<UIRef Id="WixUI_Minimal" />理想的ではないと思います。

4

1 に答える 1

5

CostFinalize は、InstallFiles 遅延アクションが実行される (実際にファイルが配置される) かなり前に発生します。したがって、CustomAction は失敗します (ファイルが利用できないため) サイレントに (Return が無視されるため)

少なくとも InstallFiles の後に CustomAction をスケジュールして延期する必要があります。または、CustomAction を延期して実行できない場合は、InstallFinalize の後に実行する必要があります (もちろん、InstallFinalize の後にロールバックを引き起こすことはできません)。

于 2008-11-19T18:50:44.483 に答える