...如果是,为什么我不能使用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不是这样做的吗?
答案 0 :(得分:2)
Visual Studio正在公开功能;这并不意味着使用它是一个好主意。自我注册很糟糕,应该通过使用类和ProgId等WiX元素显式创建COM注册来避免。
答案 1 :(得分:2)
Dark意味着反编译回源,但它并不打算通过编译器往返。这是一个有用的起点,可以清理代码并进行任何所需的重构,然后重新构建它。