【问题标题】:Using the Condition field in a Setup project on VS2008在 VS2008 上的安装项目中使用条件字段
【发布时间】:2009-10-26 07:26:07
【问题描述】:

在我的应用程序设置项目中,我尝试在 HKLM/Software 或 HKCU/Software 下设置注册表项,具体取决于用户在设置期间是否选中了“所有用户”或“仅我”。

为此,我一直在尝试使用 ALLUSERS 属性并分别对照 1 或 "" 检查它。:

  • ALLUSERS = 1
  • ALLUSERS = ""

我将键 AlwaysCreate 属性设置为 False。然而,在安装 HKLM/Software/my_key 和 HKCU/Software/my_key 时都会创建。

我错过了什么?

更新:我一直在尝试其他替代方法,例如将 ALLUSERS 括在方括号中、启用传递属性或使用 ALLUSERS != 1 而不是 = " "。无济于事。我现在放弃了,只在 HKLM 下为这两种情况创建。但如果有人有答案,我将不胜感激。

【问题讨论】:

  • 如果有人可以改进这个问题,请开火。我觉得奇怪,到目前为止我没有得到任何答案。要么是我偶然发现了一个很少有人知道的广泛使用的功能,要么更可能是我问的不对。

标签: visual-studio-2008 conditional setup-project


【解决方案1】:

我对 Windows Installer 的理解是这种行为被抽象出来,因此开发人员无需担心它。也就是说,如果未设置 ALLUSERS 属性,您的安装包将“自动”将注册表项放入 HKCU 而不是 HKLM。请参阅 MSDN 上的文档http://msdn.microsoft.com/en-us/library/aa367559%28VS.85%29.aspx。因此,听起来好像您正在尝试通过设置项目重新实现此功能;我建议删除基于 ALLUSERS 属性的条件。

附带说明,AlwaysCreate 属性控制在什么情况下将创建注册表项,具体与注册表项的内容有关。通过将其设置为 false,您是在说“如果它没有任何子键或值,请不要创建此键”。将其设置为 true 意味着“创建此键,无论它是否具有任何子键或值”。在 MSDN 上http://msdn.microsoft.com/en-us/library/e1t11k72%28VS.100%29.aspx 再次提供文档。

【讨论】:

  • 虽然它最初并没有解决我的问题,但你暗示我可能出了什么问题。谢谢阿拉斯泰尔斯。问题与此有关。我做错了什么。我正在使用 HKLM 和 HKCU 配置单元并尝试有条件地设置密钥。但是我完全错过了安装项目注册表编辑器的最后一项。一个显眼的“用户/机器蜂巢”。那是我应该放钥匙的地方,而不是直接在 HKLM 或 HKCU 下。傻我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 2011-10-17
  • 2010-09-10
相关资源
最近更新 更多