【问题标题】:Setup project creates extra keys安装项目创建额外的密钥
【发布时间】:2011-11-01 10:32:22
【问题描述】:

我有一个设置项目,它运行良好至少几年。我最近添加了一个新项目,一个 winform。我进行了大量的谷歌搜索和研究以使其工作 - 非常感谢我在“冒险”期间发现的大量文章。

这个新项目使我能够在资源管理器中右键单击文件并将其添加到我的系统中。我可以很好地安装项目,文件正在被添加/复制到它们正确的位置。代码很好,完全按照我说的去做。

由于某种原因,注册表编辑器和 Windows 注册数据库在密钥上不一致。

注册表编辑器说我应该有HKCR\*\shell\Add to system\command 和一个字符串键
Name: (Default)
Value: "[TARGETDIR]mySystemAddFileForm "%1"

到目前为止一切顺利,是的,Windows reg db 也相信这条路是正确的。是的,有一个“但是”。 出于某种原因,Windows reg db 认为应该有第二个字符串键表示
Name: (Default)
Value: null

Windows 占了上风,打乱了我的逻辑(设计、代码、想法)。

如果我手动清理它,我可以右键单击文件并将它们添加到系统中。只是要清楚。是的,资源管理器确实有一个右键单击选项,上面写着“添加到系统”,是的,在我手动编辑 regedit 后,当我单击它时它确实可以工作。

在我将其更改为注册表编辑器之前,我在 CustomSetupActions 中生成了密钥,但如果用户决定编辑安装文件夹,我无法进行该处理。从默认的 [programfiles] (c:\Program Files\ .. ) 到用户在安装点决定的任何内容。

注册表编辑器是指安装项目中的一个,查看/注册表。

我如何告诉 Windows 保留我经过微调的代码的 f* 并让我决定何时何地创建哪些 reg 键。

已编辑:(标准)至(默认)。 Windows 可能会将(默认)翻译为本地语言。将其保留为默认值。

【问题讨论】:

  • “(标准)”是指(默认)注册表项吗?此外,您的注册表值在文件路径后缺少引号。
  • 是标准 == 默认。这是一个额外的“。

标签: c#-4.0 registry setup-project


【解决方案1】:

Windows Installer 可以安装默认值,通常它们不会被 Windows 自动覆盖。

要使用 Visual Studio 安装项目安装默认值,请确保“名称”字段为空:http://msdn.microsoft.com/en-us/library/windows/desktop/aa371168(v=vs.85).aspx

这通常就足够了。如果安装后该值不符合预期,请尝试创建verbose installation log 以查看安装期间发生的情况。很可能注册表项被跳过或写入其他地方。

【讨论】:

  • 啊,是的,你在说些什么。我实际上已经写了“标准”这个词,当我删除它恢复为“默认”时。 Windows 可能会错过“默认”,因此它创建了它并将其转换为“标准”。让我构建和测试,否则看起来像得分这个。干杯伙伴。
猜你喜欢
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
  • 2020-04-15
  • 2013-06-26
  • 2021-01-23
  • 1970-01-01
  • 2020-02-09
  • 2021-02-24
相关资源
最近更新 更多