我需要在生产服务器上将Microsoft Practices企业库安装到GAC中。我已经阅读了无数文章,说明这样做的方法是通过使用wix创建一个msi,但我不能为我的生活弄清楚它是如何完成的。有没有办法创建一个引用企业库并将其安装到gac的简单应用程序?没有其他东西需要安装。
IsWiX将GlobalParams.dll安装到GAC。你可以在这里找到源代码:
https://github.com/iswix-llc/iswix/blob/master/Installer/IsWiXNewAddInMM/IsWiXNewAddInMMcustom.wxs
<DirectoryRef Id="TARGETDIR">
<Directory Id="GlobalAssemblyCache" Name="GlobalAssemblyCache">
<Component Id="globalparams" Guid="{B07FF430-AAB4-49E6-8035-60142942F325}" Permanent="yes">
<File Id="globalparams" Source="..\Deploy\IsWiXNewAddIn\GlobalParams.dll" KeyPath="yes" Assembly=".net"/>
</Component>
</Directory>
</DirectoryRef>
我记得,目录ID并不重要。 Windows安装程序不会在GAC方面使用这些。诀窍是1)DLL必须具有强名称2)Assembly =“。net”属性将填充正确的MSIAssembly表,以便MSI将使用MsiPublishAssemblies操作与fusion交互并在正确的GAC中注册程序集。
如果我只知道图书馆...除了Chris Painter的答案之外,让我记下一些快速选项:
NuGet:Seems to be a NuGet package here?
Dark.exe:您还可以使用WiX工具包及其dark.exe
二进制文件来反编译现有的MSI,然后调整它并编译新的MSI。所需的WiX标记清理并非易事,但可以做到。训练有素的打包者当然可以做到。 WiX Quick Start Tips。
GAC:安装到GAC需要有问题的strong name for the assembly(签名)(more on strong naming)然后您只需将Assembly属性设置为".net"
,如Painter在其答案中所解释的:
WiX Documentation: File Element
(注意如何取消AssemblyApplication
属性)。 <File Source="MyFile.dll" KeyPath="yes" Assembly=".net" />
一些链接:也许快速阅读这些链接。