我在使用 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/