c#-4.0 - 安装项目创建额外的 key

标签 c#-4.0 registry setup-project

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

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

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

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

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

Windows 优先并打乱了我的逻辑(设计、代码、想法)。

如果我手动清理它,我可以右键单击这些文件并将它们添加到系统中。只是要明确一点。是的,资源管理器确实有一个右键单击选项,显示“添加到系统”,是的,在我手动编辑 regedit 后,单击它确实可以工作。

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

我所说的注册表编辑器是指安装项目中的 View/Registry。

如何告诉 Windows 保留我精心调整的代码,并让我决定何时何地创建哪些注册表项。

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

最佳答案

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

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

这通常就足够了。如果安装后该值与预期不符,请尝试创建 verbose installation log看看安装过程中会发生什么。很可能该注册表项被跳过或写入其他位置。

关于c#-4.0 - 安装项目创建额外的 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7965189/

相关文章:

c# - 无法将事件源重新注册到新的自定义事件日志

c++ - RegEnumValue 使应用程序崩溃

visual-studio-2013 - Visual Studio 2013 的 InstallShield LE - 安装错误 ##IDS_ERROR_7## - ##IDS_ERROR_1####IDS_ERROR_2803##

c# - VS2010 安装项目卡住在 'Select Installation Folder'

c#-4.0 - 如何在 C# 4.0 中编写并行计算过程

c# - 用于批量插入具有子对象的对象的性能

c - 使用 NtCreateKey/NtOpenKey 获取 key 句柄

c# - 卸载 Windows 服务的正确方法?

c# - 从 DateTime 中删除 DST

php - 使用 PHP 和 DOTNET 类访问 Windows 注册表