Tag: 安装项目

Windows安装程序:动态注册表项/值

我的问题的概要: 是否可以在VS2010的Windows安装项目的注册表屏幕中使用您自己的自定义变量(您可以使用[TARGETDIR]的方式)? 具体来说,我需要将程序集的强名称和程序集版本存储在注册表中,以便在计算机上注册COM对象,而无需安装用户具有管理员权限。 我已经尝试过使用自定义操作了,如果可能的话,我宁愿不继续沿着这条路走下去。 以下是具体内容,以及我尝试过的内容: 最近,我的雇主开始盲目地从他们的机器中删除所有员工的管理权限。 我创建了一个COM暴露的C#类,我在我的一些工作站上使用它,不再能够注册,因为我不再拥有HKEY_CLASSES_ROOT下的相应权限。 通过谷歌搜索,我发现如何在HKCU *下注册所有适当的密钥,但现在我想在我的部署项目中实现这一点。 我了解如何在Windows安装程序中使用注册表屏幕,但是需要存储自定义键/值(安装文件夹,程序集强名称,版本)。 我可以使用自定义操作,但理想情况下,我希望Windows安装程序管理我的注册表设置,因为(a)它比我在卸载时自动删除所有正确的键/值更好,(b)在安装期间,注册表更改是事务性的并且在安装错误时回滚,并且(c)注册表项安装/删除/事务的逻辑已经由Microsoft编写,我不必自己重写它。 该项目在VS2008直到今天,但我刚刚升级到VS2010,所以可能在2008年到2010年之间发生了一些可能允许这种行为的变化。 因此,有没有更好的方法来实现这一目标,而不是使用自定义操作? 编辑:我找到了这个答案,这似乎表明您可以访问安装项目中的Windows安装“注册表”表。 不过,我不知道如何访问它。 在过去,我似乎记得您可以从特殊的外部工具(Orca)访问MSI数据库,但我不知道您是否可以在安装项目中访问这些表。 编辑2:啊,我可能会做某事; 也许是一个后期制作活动: 使用Orca从命令行编辑msi? , 使用SQL和脚本的数据库查询示例 , WiRunSQL.vbs *运行RegAsm两次 – 一次使用/ codebase,一次不使用; 两次使用/ regfile选项。 然后将两个文件合并在一起(删除重复项),并用HKCU \ Software \ Classes替换所有HKCR引用。