使用WiX将dll安装到gac

时间:2019-04-08 11:11:59

标签: wix windows-installer gac

我需要将Microsoft Practices企业库安装到生产服务器上的GAC中。我读了无数篇文章,指出实现此方法的方法是使用wix创建一个msi,但我一生都无法弄清楚它是如何完成的。有没有一种方法可以创建引用企业库并将其安装到gac的简单应用程序?不需要安装其他任何东西。

2 个答案:

答案 0 :(得分:1)

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操作与融合交互并在正确的GAC中注册程序集。 / p>

答案 1 :(得分:0)

如果我只知道图书馆...除了 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" ,如画家在他的答案中解释的那样:

    <File Source="MyFile.dll" KeyPath="yes" Assembly=".net" />

某些链接 :也许可以快速阅读这些链接。