【问题标题】:How to distinguish per-user vs. system-wide installation in QT installer framework?如何在 QT 安装程序框架中区分每个用户和系统范围的安装?
【发布时间】:2020-04-18 00:12:33
【问题描述】:

我正在使用一些名为 pgModeler 的应用程序,它的当前版本提供了一个基于 QT 安装程序框架的安装程序。该安装程序在 Windows 上的问题在于它仅安装 start menu entries per-userregisters the app itself per-user。对于像我这样使用显式管理员用户进行系统维护而不使用非管理员用户进行日常工作的人来说,这是一个问题。重要的是实际上使用了两个不同的用户名(Administratortschoening),而不是 Windows 的默认行为来限制一个用户仅使用 UAC。

在切换到 QT 安装程序框架之前,已经使用了 Inno Setup,并且有一些 distinguishing between administrative and system-wide vs. per-user installation 的概念。开关只是以管理员身份执行安装程序,其他一切都自动运行,QT 不再是这种情况。

我为 QT 找到的还有 pre-defined constants 到不同的路径,例如对于开始菜单:

UserStartMenuProgramsPath
AllUsersStartMenuProgramsPath

我还没有发现是否提供了像 Inno 这样的自动模式?像一个简单的设置告诉安装程序总是更喜欢系统范围的开始菜单和东西,实际上是安装程序能够区分的所有内容。还是开发人员需要自己构建正确的路径?就像下面的例子:

component.addOperation("CreateShortcut", "@TargetDir@/pgmodeler.exe", "@StartMenuDir@/pgModeler.lnk"

对比

component.addOperation("CreateShortcut", "@TargetDir@/pgmodeler.exe", "@AllUsersStartMenuProgramsPath@/@StartMenuDir@/pgModeler.lnk"

在后者的情况下,如何在控制面板中在每个用户和系统范围Programs and Features 之间切换?

谢谢!

【问题讨论】:

标签: windows qt installation qt-installer pgmodeler


【解决方案1】:

可以使用名为AllUsers 的设置在当前用户和所有用户的安装之间切换,该设置支持truefalse。重要的是在何时何地提供这些信息:使用以下方法调用安装程序时,一种方法非常早:

installer.exe AllUsers=true

这样,选择开始菜单组的 GUI 确实已经显示了所有用户可用的所有条目,而不仅仅是用户私有开始菜单的条目,就像以前一样。另一种方式是setting values on the installer at runtime。但重要的是,这也需要在路径得到解决之前发生。一个例子可以在以下地方看到:

function Controller()
{
    [...]
        //store all users and online/offline info
        installer.setValue("allUsers", isAdmin ? "true" : "false");
        installer.setValue("isOffline", installer.isOfflineOnly() ? "true" : "false");
    [...]
}

https://github.com/Skycoder42/QtIFW-Advanced-Setup/blob/master/installer/config/controller.js

这些东西在过去也得到了增强,尽管我还没有在文档中找到关于它的确切含义和使用方法的任何解释。

https://bugreports.qt.io/browse/QTIFW-124

另外,该软件没有在Programs and Features正确注册,它只发生在admin-only:

【讨论】:

    猜你喜欢
    • 2020-01-05
    • 2021-04-16
    • 1970-01-01
    • 2012-08-28
    • 2018-08-05
    • 1970-01-01
    • 2019-09-05
    • 2016-01-27
    • 1970-01-01
    相关资源
    最近更新 更多