Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用WiX将dll注册到COM安装后_Com_Wix - Fatal编程技术网

如何使用WiX将dll注册到COM安装后

如何使用WiX将dll注册到COM安装后,com,wix,Com,Wix,我想使用regasm.exe将.net dll注册为COM对象。我遇到了一个导致安装程序无法工作的问题。我相信这是因为我想注册的文件在我想运行命令时还没有进入安装目录。但是错误日志并没有告诉我足够的安装错误信息。在我运行自定义命令之前,如何确保文件被移动到“程序文件”中 以下是我正在使用的: <InstallExecuteSequence> <Custom Action='comReg' After='InstallFinalize'>NOT REMOVE&l

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

以下是我正在使用的:

  <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捕获程序集的regasm,并改用声明性方法。

我更喜欢使用heat.exe,但我不确定如何使用。我正在使用VisualStudio2005,我不希望使用命令行(出于版本控制的原因)。有没有办法在VS中完成这一切?只需运行heat.exe一次,然后将结果检查到版本控制中。必要时更新(重新运行heat.exe)。我在查找如何向heat注册DLL时遇到问题。下面是我正在做的:“heat.exe文件my.dll-gg-out my.wxs”。然后将.wxs文件添加到我的项目中。编译并安装。运行OleView,但看不到条目。我肯定错过了一步。有什么想法吗?您是否从产品中的某个功能添加了对新组件的引用?在卸载前使用自定义操作调用regasm/unregister如何?我想这会容易得多,而且还保留了回滚功能。顺便说一下,我通过将前几行中的“REMOVE”替换为“Installed”,实现了上述功能。