installation - 尝试执行已安装的软件时, "All users"模式下的 Inno Setup 安装仍然需要非管理员用户的管理员权限

标签 installation inno-setup admin uac

我在使用 Inno Setup 的打包软件时遇到以下问题。

我使用以下选项来允许用户为所有用户或当前用户选择安装。

PrivilegesRequiredOverridesAllowed=dialog

现在,作为管理员,我选择为“所有用户”安装。当然,并非所有“其他用户”都是管理员。

我安装到Program Files。然后,当我以访客用户身份登录时,我希望在没有管理员权限的情况下运行已安装的软件。创建的桌面图标的右下角仍然有这个“盾牌”,并且需要管理员密码才能运行该软件。

在我的例子中,“所有用户”安装选项似乎意味着“所有管理员用户”。

我正在附加我的 setup.iss 文件。我尝试过各种不同的选择,但没有任何效果。

我的问题是否与 Inno Setup 创建的桌面图标或 [Setup] 部分中的选项有关? 我很确定我在选项中遗漏了一些东西。

[Setup]
DefaultDirName={autopf}\Pattern 3.x
PrivilegesRequiredOverridesAllowed=dialog
UsePreviousPrivileges=no

[Types]
Name: "custom"; Description: "Custom installation"; Flags: iscustom

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"

[Components]
Name: "GEI"; Description: "GEI {#gei_version}"; Flags: checkablealone disablenouninstallwarning
Name: "GEP"; Description: "GEP {#SetupSetting("AppVersion")}"; Flags: checkablealone disablenouninstallwarning

[Files]
Source: ".\UninsIS.dll"; Flags: dontcopy
Source: ".\UninsIS.dll"; DestDir: "{code:GetDataDir}"; Check: Is64BitInstallMode()
Source: ".\UninsIS.dll"; DestDir: "{code:GetDataDir}"; Check: not Is64BitInstallMode()
;Source: ".\Softwares\{#gei}"; DestDir: {code:GetDataDir}; Flags: deleteafterinstall nocompression; Components: GEI
;Source: ".\GEP - Installation Guide.pdf"; DestDir: {code:GetDataDir}; Flags: ignoreversion sign recursesubdirs; Components: GEP
Source: ".\GEP\*"; DestDir: {code:GetDataDir}; Flags: ignoreversion sign recursesubdirs; Components: GEP

[Icons]
Name: "{group}\Pattern {#SetupSetting("AppVersion")}"; Filename: "{code:GetDataDir}\Pattern.exe"; Parameters: "--from_desktop"
Name: "{group}\{cm:UninstallProgram,Pattern {#SetupSetting("AppVersion")}}"; Filename: "{uninstallexe}"
Name: "{autodesktop}\Pattern {#SetupSetting("AppVersion")}"; Filename: "{code:GetDataDir}\Pattern.exe"; Parameters: "--from_desktop"

[Run]
Filename: "{code:GetDataDir}\{#gei}"; Parameters: "/min"; StatusMsg: "Installing GEI... please wait..."; Flags: runhidden; Components: GEI
;Filename: "{code:GetDataDir}\GEP - Installation Guide.pdf"; Tasks: StartAfterInstall; Flags: shellexec runasoriginaluser skipifdoesntexist

[Registry]
Root: "HKLM"; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; ValueType: String; ValueName: "{code:GetDataDir}\Pattern.exe"; ValueData: "~RUNASADMIN"; Flags: uninsdeletekey noerror

最佳答案

PrivilegesRequiredOverridesAllowed 与管理员“盾牌”无关。

您使用以下代码明确添加“盾牌”您自己:

[Registry]
Root: "HKLM"; \
    Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; \
    ValueType: String; ValueName: "{code:GetDataDir}\Pattern.exe"; \
    ValueData: "~RUNASADMIN"; Flags: uninsdeletekey noerror

如果您只想为管理员安装添加“屏蔽”,请使用 Check parameter查询IsAdminInstallMode :

Check: IsAdminInstallMode

关于installation - 尝试执行已安装的软件时, "All users"模式下的 Inno Setup 安装仍然需要非管理员用户的管理员权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77344121/

相关文章:

makefile - Homebrew libtool 安装卡在 `rm -rf`

inno-setup - Inno 安装程序 : Disabling components based on PC architecture

php - 具有自定义属性的 Magento 产品网格过滤器

linux - 将 CouchDB .couch 文件从 Windows 传输到 Linux

mysql - GRANT USAGE to @user'%' 是否可以为特定列表工作?

installation - Visual Studio 2013 RTM 设置失败 - 为主题指定的形式不是指定的信任提供者支持或已知的形式

eclipse - 设置 Eclipse 进行团队开发的常见解决方案是什么?

android - Facebook 如何衡量应用安装 - Android/IOS

java - 如何在 NetBeans 中设置 Inno Setup 插件

command-line - 如何运行隐藏在 Inno Setup 中的 cmd.exe