2
<InstallUISequence>
  <Custom Action="myActionid"
          Before="ExecuteAction">NOT Installed</Custom>
</InstallUISequence>

これを使用して customAction がいつ実行されるかを設定しますが、実行したいときに実行されないようです。詳細ログにこれが表示されます

*

*

ここに画像の説明を入力

アクションの実行が早すぎるため、Execute アクションの直前 (または中央の太字部分と executeaction の間) に実行する必要があります。

その後、プロパティが変更され、正しい値を取得できないため

または、プロパティの変更を停止することもできます。

プロパティは、INSTALLDIR私がコピーBrowseDlgして installdir ダイアログを、プログラムに必要な 3 つのパスを要求するダイアログに変更した意味のコピーです。必要だと思われる場合は、そのコードも投稿しますが、カスタム アクションをいつ実行して適切な値を取得するかを指定するだけでよいように感じます。

答えてくれてありがとう:)

4

1 に答える 1

0

さて、mycustomActionを希望する特定のランタイムに設定する方法はまだわかりませんが、のようなプロパティINSTALLDIRがによって変更された理由がわかったので、もう必要ありません。costfinalize

このように機能する理由はわかりませんが、IDに小文字が含まれるディレクトリがありcostfinalize、インストールシーケンス後にデフォルトに戻しました。

だからこのようなすべてのキャップを持っている

<Directory Id="SPCSFOR" Name="Företag">
</Directory>
<Directory Id="SPCSGEM" Name="Gemensamma filer">
</Directory>
<Directory Id="VISMAADMIN" Name="SPCS Administration">
</Directory>

自分自身をオリジナルのように動作させる最後のピースでInstallDirDlgあり、プロパティはユーザーが変更した方法のままですBrowseDlg

その後、mycustomActionを設定するのは簡単でした

<InstallExecuteSequence>
  <Custom Action="myActionid"
          After="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>

そのようにして、代わりにそこからプロパティを読み取り、必要な値を取得するためにちょうどいいタイミングをとろうとしても問題はありません!

于 2012-12-19T14:03:36.750 に答える