9

自己登録しない場合。では、WIX を使用してインストール中に COM dll の登録を行うにはどうすればよいでしょうか。

チュートリアルに従って、ComPlusApplication の例 (非 .net dll) を使用しました。しかし、うまくいきません。登録に失敗します。

コマンドラインから regsvr32 を使用して正常に登録できます。com dll を登録するためのカスタム アクションを作成しないことについて読みました。

最善のアプローチは何ですか?heat を使用する必要がある場合、コマンドをどこに記述し、結果の wxs をメイン プロジェクトに追加しますか?

4

2 に答える 2

20

Wix ツールの Heat.exe を使用して、com コンポーネントの登録に必要なすべてのデータを収集し、次のように .wxs ファイル内のフラグメントを参照することを強くお勧めします。

    <ComponentGroupRef Id="FooBar.dll" />

または、次のように .wxs ファイルに含めます。

    <?include FooBar.dll.wxi?>

このメソッドを使用すると、Com コンポーネントの登録/登録解除中に何が起こるかを完全に制御できます。

ただし、Wix プロジェクトで Regsvr32 を引き続き使用することはできます。ただし、COM コンポーネントでの RegisterServer/UnregisterServer 関数の正しい実装に依存しています。

    <CustomAction Id="RegisterFooBar" 
                  Directory="INSTALLDIR" 
                  ExeCommand='regsvr32.exe /s "[INSTALLDIR]FooBar.dll"'> 
    </CustomAction> 
    <CustomAction Id="UnregisterFooBar" 
                  Directory="INSTALLDIR" 
                  ExeCommand='regsvr32.exe /s /u "[INSTALLDIR]FooBar.dll"'> 
    </CustomAction>

次に、アクションをインストール シーケンスに追加します。

    <InstallExecuteSequence> 
        <Custom Action="RegisterFooBar" After="InstallFinalize">NOT Installed</Custom>
        <Custom Action="UnregisterFooBar" After="InstallFinalize">REMOVE="ALL"</Custom>
    </InstallExecuteSequence>
于 2012-05-09T13:57:00.333 に答える