dark.exe(来自WiX)是从MSI中提取信息的可靠方法吗?

时间:2011-03-11 17:21:29

标签: visual-studio wix regsvr32

...如果是,为什么我不能使用SelfRegCost="0"

所以这可能会有点哲学;)

基本问题是:我必须在安装过程中注册ShellExtension DLL。使用普通的旧VS2008部署时,我有一个自定义操作,在我的dll上运行regsvr32。然后在我的WiX设置中,我做了同样的事情,即使卸载时注销了(/ u)。这很好。

直到有一天,在卸载Visual Studio安装程序后,我遇到了一些第三方DLL丢失注册的问题。我发现安装已经覆盖了DLL的默认位置。我发现可以将Register属性从vsdrfCOMSelfReg更改为vsdrfDoNotRegister,现在我的安装程序不再覆盖默认位置。

这让我觉得我可以使用相同的Property来注册我的ShellExtension DLL。因此,让我们在VS Setup上使用dark,看看vsdrfCOMSelfReg的翻译是什么。我发现唯一的区别是SelfRegCost="0"标记中的属性File

但是根据这篇文章(How do you register a Win32 COM DLL file in WiX 3?)使用SelfRegCost是baaad,很多事情都出错了。可能。

现在我的理由是:

a)dark.exe不是从MSI或

中提取信息的可行方法

b)SelfRegCost="0"的使用并不像每个人都假装的那样糟糕,因为Visual Studio不是这样做的吗?

2 个答案:

答案 0 :(得分:2)

Visual Studio正在公开功能;这并不意味着使用它是一个好主意。自我注册很糟糕,应该通过使用类和ProgId等WiX元素显式创建COM注册来避免。

答案 1 :(得分:2)

Dark意味着反编译回源,但它并不打算通过编译器往返。这是一个有用的起点,可以清理代码并进行任何所需的重构,然后重新构建它。