QtIFW Always create registry entry
我目前正在使用 Qt-Installer-Framework 为我的应用程序创建设置。现在一切正常,除了一件事:
如果我将它安装到除 C:\\Program Files\\MyApp 之外的任何位置,安装程序将不会为 Programs and Features 创建注册表项!
有没有办法告诉安装程序总是这样做?
编辑:
在尝试了各种不同的组合之后,我现在知道问题出在哪里了:
如果我尝试仅以当前用户身份安装(将 AllUsers 变量设置为 false),它将始终有效并在 HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{GUID} 中创建一个条目。
但是,如果我为所有用户安装,它将尝试在 HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{GUID} 中创建一个密钥。这只有在安装程序必须在安装期间提升它的操作时才有效(因为我选择了一个需要管理员权限的目录)。
所以,错误是:安装程序不会提升自己来创建"全局"注册表项,因此无法创建它。关于如何修复它的任何想法?
- 它是一台 Windows 10 机器
-
如何在 AllUsers true 和 false 之间切换?我在文档中找不到有关此选项的任何信息。 stackoverflow.com/questions/59510656/
-
@ThorstenSchning 我刚刚检查过,它是一个扩展,由高级控制器脚本使用。见 github.com/Skycoder42/QtIFW-Advanced-Setup/blob/master/
-
谢谢,重要的是比我使用 installer.setValue 更早地设置值。除此之外,还可以在 shell 上提供:installer.exe AllUsers=true bugreports.qt.io/browse/QTIFW-124
这里有这个问题的答案的链接。
Add the following line to your component's package xml file:
@true@
And use this line in your script file:
@component.addElevatedOperation("Execute","someCommand");@
instead of
@component.addOperation("Execute","someCommand");@
- 我知道这个。但是,我不想总是以管理员身份运行,仅在为所有用户安装设置时提升(在运行时使用自定义页面决定)。此外,我没有创建任何添加注册表项的操作。这是由安装程序自动完成的。