我将 Inno Setup 升级到 5.6.0,现在当我编译时,我收到警告:
警告:
部分指令[Setup]
设置为PrivilegesRequired
但每用户区域(admin
、HKCU
、userappdata
)由 剧本。无论 Windows 版本如何,只要安装 是管理性的,那么你应该小心地让每个用户 区域变更:此类变更可能达不到您的预期。看 请参阅帮助文件以获取更多信息。userdesktop
我明白它在说什么。在
[icons]
部分我有:
Name: "{userdesktop}\Meeting Schedule Assistant"; \
Filename: {app}\MeetSchedAssist.exe; \
Tasks: desktopicon;
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Meeting Schedule Assistant"; \
Filename: {app}\MeetSchedAssist.exe; \
MinVersion: 4,4; \
Tasks: quicklaunchicon;
我认为“过去”这些是由脚本向导创建的。现在我的安装程序确实正在运行
PrivilegesRequired
。所有数据文件都安装到 ProgramData
文件夹中。当程序启动时,它会查找任何丢失的文件并从这个公共位置获取它们。
因此,唯一的问题与这两个快捷方式有关。走捷径的正确方法是什么?因为正常情况下安装程序会添加快捷方式。
为所有用户添加快捷方式,而不仅仅是为正在安装应用程序的用户(管理员)。
{commondesktop}
代替 {userdesktop}
。{commonappdata}
代替 {userappdata}
。有关替代方法,请参阅 Inno Setup 在所有用户的所有桌面上创建单独的快捷方式。
许多安装都有“为我”/“为所有人”选项。在第一种情况下,您不需要管理员权限,可以使用
user*
常量。在后一种情况下,您需要管理员权限,并且应该使用 common*
常量。另请参阅使 Inno Setup 安装程序仅在需要时请求权限提升。
Inno Setup 6 内置支持非管理安装模式。然后,您可以使用“自动”常量,例如
{autodesktop}
和 {autoappdata}
。
谢谢,但需要更多帮助,让我解释一下:
{userappdata}
在我从 Inno Setup 5.5.4 (a) 升级到 6.2.2 后,我还收到了另一个警告,通过替换解决了 {pf}
--> {commonpf}
.. .但是我仍然收到警告,现在不再是
(HKCU,userappdata)
,它现在只说(HKCU)
:
警告:[Setup] 部分指令 PrivilegesRequired 设置为 admin,但脚本使用每用户区域 (HKCU)。无论 Windows 版本如何,如果安装是管理性的,那么您应该小心地进行任何每个用户区域的更改:此类更改可能无法实现您的预期。请参阅帮助文件以获取更多信息。
非常感谢
{userappdata}
--> {commonappdata}
,但是还需要什么才能消除该警告?
提示:我确信(因为如果我删除该部分,则不再显示警告)它与
[Registry]
部分相关,其中我有一些 user 注册表路径上需要的注册表项。
有问题的部分是:
[Registry]
Root: HKCU; Subkey: Software\SomePath\SomeSubPath; ValueType: string; ValueName: SomeName; ValueData: SomeData; Tasks: ; Languages:
Root: HKCU; Subkey: Software\SomeOtherPath\SomeSubPath; ValueType: string; ValueName: SomeOtherName; ValueData: SomeOtherData;
Root: HKCU; Subkey: Software\SomeOtherPath\SomeOtherSubPath; ValueType: string; ValueName: SomeOtherName; ValueData: SomeOtherData;
如何更改此类注册表部分以使该密钥存储在 user 注册表配置单元中?