我想使用 regasm.exe 将 .net dll 注册为 COM 对象。我遇到了导致 intstaller 无法工作的问题。我相信这是因为当我想运行命令时,我想注册的文件还没有进入安装目录。但是错误日志并没有说明安装错误让我知道。任何想法,如何确保在运行自定义命令之前将文件移动到“程序文件”?

这是我正在使用的:

  <InstallExecuteSequence>
    <Custom Action='comReg' After='InstallFinalize'>NOT REMOVE</Custom>
    <Custom Action='comUnreg' Before='RemoveFiles'>REMOVE</Custom>
  </InstallExecuteSequence>

  <CustomAction Id='comReg' Directory='INSTALLDIR'
 ExeCommand='"[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\regasm.exe" "[INSTALLDIR]my.dll"' Return='check' />

  <CustomAction Id='comUnreg' Directory='INSTALLDIR' ExeCommand='"[WindowsFolder]Microsoft.NET\Framework\v2.0.50727\regasm.exe" /u "[INSTALLDIR]my.dll"' Return='check' />

最佳答案

你为什么要这样做?您将失去在适当的 MSI 表中捕获该注册将提供的所有回滚。另外,通过这种安排,您将遇到海拔问题。

强烈建议 使用 heat.exe 来捕获程序集的重新加气,并改用声明式方法。

关于com - 如何使用 WiX 将 dll 注册到 COM 安装后,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1394792/

10-13 07:58