0

NSIS インストーラーを WiX に移植しようとしています。インストーラーが実行されるたびに、レジストリ キーが新しい GUID 値に設定されるため、アプリを実行すると、インストール後に最初に実行されたかどうかを確認できます。最初の実行時に、アプリは別のレジストリ キーをインストーラーからの GUID 値に設定します。2 つのキーが一致する限り、インストーラーが実行されていないことがわかります。

NSISコードは次のとおりです。

#Write InstallGUID
Call CreateGUID
Pop $0
WriteRegStr HKLM "${REGKEY}" InstallGUID $0

Function CreateGUID
  System::Call 'ole32::CoCreateGuid(g .s)'
FunctionEnd

この時点でかなり完全な WiX インストーラーの準備が整いましたが、この機能を複製する方法がわかりません。インストール時に WiX に GUID を生成するものはありますか、それともカスタム イベントを記述する必要がありますか? 少しのdllを書くのを避けることができれば、それが最善です。

4

1 に答える 1

0

より良い解決策が見つからない場合は、そのコードを単独で NSIS スクリプトに入れてサイレント インストールにすることで、Wix+MSI インストーラーから NSIS スクリプトをサイレント モードで実行できます。

NSIS コードで適切なエラー キャッチを実行し、Wix に返されるエラー コードを返す/設定して、レジストリ関連のエラー/エラーを Wix インストーラーに伝達できるように注意してください。

于 2009-12-11T00:25:22.147 に答える