2009-09-08 114 views
2

我想使用regasm.exe注册.net DLL作为COM对象。我遇到了一个问题,导致intstaller无法正常工作。我相信这是因为我想要注册的文件在我想运行该命令的时候没有进入安装的目录。但是有错误日志没有足够说明安装错误让我知道。任何想法,如何确保文件在运行自定义命令之前移动到“程序文件”?如何使用WiX注册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' /> 
+1

顺便说一句,我得到了上面的工作方式,我想通过用“Installed”替换前几行中的“REMOVE”一词。 – Jono 2009-09-15 15:50:31

回答

5

你为什么要这么做?您将失去在相应的MSI表中提供注册的所有回滚。另外,按照这个时间表,你会遇到海拔问题。

高度建议使用heat.exe来捕获您的程序集的regasm并使用声明式方法。

+0

我更喜欢使用heat.exe,但我不知道如何。我正在使用Visual Studio 2005,我宁愿不使用命令行(出于版本控制的原因)。有没有办法在VS中做到这一切? – Jono 2009-09-15 15:38:05

+0

只需运行一次heat.exe,然后将结果检入版本控制。在必要时更新(重新运行heat.exe)。 – 2009-09-16 19:22:17

+0

我很难找到如何注册DLL的热量。这是我在做什么:“heat.exe文件my.dll -gg -out my.wxs”。然后将.wxs文件添加到我的项目中。编译并安装。运行OleView并不看到条目。我当然错过了某个步骤。有任何想法吗? – Jono 2009-09-17 19:31:02

相关问题