さらにソースをブラウジングして実験した後、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>