0

WixSharp を使用して従来のインストーラーの機能を再作成しようとしています。従来のセットアップ プロジェクトでは、サード パーティの DLL の一部が「vsdrfCOMSelfReg」とマークされていました。 File タグに追加できるさまざまな場所を見てきましSelfRegCost="0"たが、非常に嫌われています。

WixSharp を使用して COM DLL を正しく登録するにはどうすればよいですか? WixSharp から DLL の File タグに SelfRegCost フィールドを追加する方法はありますか?

4

2 に答える 2

1

さらにソースをブラウジングして実験した後、WixSharp を介して邪悪なアプローチを強制する方法を見つけました。また、これが WixSharp のサンプル「CustomAttributes」で多少カバーされていることも後で発見しました。

「悪の道」

File LibToReg = new File("..\Path\To\LibToReg.dll");
LibToReg.AttributesDefinition += "SelfRegCost=1";

または (CustomAttributes サンプルに基づく):

File LibToReg = new File("..\Path\To\LibToReg.dll")
            {
                Attributes = new Attributes() { { "SelfRegCost", "1" } }
            };

これにより、以下の wxs が生成されます。

<Component Id="Component.LibToReg.dll" Guid="EABD7A49-26DD-4720-AE5A-AA9EEFD8C91A">
          <File Id="File.LibToReg.dll" Source="..\Path\To\LibToReg.dll" SelfRegCost="1" />
</Component>

生成されたコードの残りの部分は、インストールされている他の DLL と同じように見えます。

参考までに、Add-In Express の「VDProj to WiX Converter」を使用して元のセットアップ プロジェクトから生成された元の wxs ソースを次に示します。SelfRegCost="0" はコンバーターによって追加されたと思いますが、後で同僚が手動で追加した可能性があります。

<Component Id='com_FB7105EC_5352_4561_AE01_405562F0EA1E' Guid='6718170E-0335-4FD6-A1E8-D9E926DDE3EC' Permanent='no' SharedDllRefCount='no' Transitive='no'>
            <File Id='_FB7105EC_5352_4561_AE01_405562F0EA1E' DiskId='1' Hidden='no' ReadOnly='no' SelfRegCost='0' System='no' Vital='yes' Compressed='yes' Name='LibToReg.dll' Source='..\Path\To\LibToReg.dll' KeyPath='yes' />
</Component>
于 2014-08-26T15:02:43.450 に答える