Wix - 将程序集动态注册到GAC

时间:2009-08-03 16:25:09

标签: .net wix gac global-assembly-cache

我正在编写Wix安装程序以将.NET程序集安装到GAC。容易...

我的问题是:是否有可能在未来证明这种情况,以便我可以拉出现有网络文件夹中的任何程序集并注册每个程序集 - 而无需硬编码确切的程序集名称?这将允许我创建一个可以在将来一次又一次重复使用的MSI。

现在我的代码指向一个单独的DLL,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="16c27e1f-8f59-40bc-9ce6-ba816eae4323" Name="GACInstaller" Language="1033" Version="1.0.0.0" Manufacturer="GACInstaller" UpgradeCode="7fb35788-63aa-4cb1-9ad2-fd965cdeb7c8">
    <Package InstallerVersion="200" Compressed="yes" />

        <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />

        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="INSTALLLOCATION" Name="GACInstaller">
                    <Component Id="ProductComponent" Guid="ae2bb9bd-f8d6-4060-b25b-8147fac155d6"> 
            <File Id='my_assembly' Name='my_assembly.dll' KeyPath='yes' Assembly='.net' Source='C:\my_assembly.dll' /> 
                    </Component> 
                </Directory>
            </Directory>
        </Directory>

        <Feature Id="ProductFeature" Title="GACInstaller" Level="1">
            <ComponentRef Id="ProductComponent" /> 
    </Feature>
    </Product>
</Wix>

1 个答案:

答案 0 :(得分:3)

不,不是真的。不仅仅是文件必须在MSI中更新。例如,ProductCode(Product / @ Id)对于每个单独的安装都必须是唯一的。所有文件表信息都需要更新。我确信还有其他我忘记的事情,因为WiX工具集会处理这一切。