3

高级安装程序版本 (8.9) 我开发了一个简单的 .Net 安装程序类。它的特点是提供了一个特定的用户界面,基于 *ini 文件。据我所知,高级安装程序不支持这样的事情。如果我错了,请纠正我!但这不是我问题的重点。根据用户的选择,我的安装程序类会在注册表中合并一个特定的 *.reg 文件。这是我用于该目标的代码:

Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents=false;
proc.StartInfo.FileName="regedit.exe";
proc.StartInfo.Arguments = " \"" + regFilePath + "\"";
proc.StartInfo.UseShellExecute = true;
proc.Start();

因此,如果我有一个 sample.reg 文件排序

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\NIKOLETA]
...

当我在Windows 安装程序(内置于 VS)中导入我的安装程序类时- sample.reg 被很好地合并并且 NIKOLETA 密钥出现在HKEY_CURRENT_USER\SOFTWARE下。不幸的是,当在Advanced Installer下导入安装程序类时- sample.reg 再次合并,但不在所需位置,但 NIKOLETA 键出现在HKEY_USERS.DEFAULT\SOFTWARE下。我被告知 Advanced Installer 的 HKEY_USERS 的默认路径是 HKEY_USERS.DEFAULT\Software[Manufacturer][ProductName]。但是它如何以及为什么会影响 .Net 安装程序类?我该如何解决这个问题,以便正确合并我的 *.reg 文件?谢谢你的期待!

4

1 回答 1

4

HKEY_USERS.DEFAULT 它实际上是本地系统帐户的配置文件,因此如果您的自定义操作设置为延迟运行且没有模拟,则可以将注册表项重定向到那里,这意味着它设置为在具有完全管理员权限的 SYSTEM 帐户下运行.

此外,如果您只想根据条件创建某个注册表项,您可以从注册表页面创建条目,并从组织页面为其组件设置安装条件。

于 2012-11-13T07:45:20.650 回答