1

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

所以这可能有点哲学;)

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

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

这让我想到我可以使用相同的属性来注册我的 ShellExtension DLL。因此,让我们在 VS 设置上使用 dark 并查看它的翻译vsdrfCOMSelfReg是什么。我发现唯一的区别是标签SelfRegCost="0"中的属性。File

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

现在我的理由是:要么

a) dark.exe 不是从 MSI 中提取信息的可靠方法,或者

b) 的使用SelfRegCost="0"并不像大家想象的那么糟糕,因为 Visual Studio 一直以来都是这样吗?

4

2 回答 2

2

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

于 2011-03-11T18:18:04.793 回答
2

Dark 旨在反编译回源代码,但不打算通过编译器来回返回。它是一个有用的起点,可以清理代码并进行任何需要的重构,然后将其重新构建。

于 2011-03-11T18:45:24.547 回答