gpt4 book ai didi

windows - Inno Setup 总是安装到管理员的 AppData 目录中

转载 作者:可可西里 更新时间:2023-11-01 13:26:10 31 4
gpt4 key购买 nike

我想将我的应用程序存储在当前用户的 AppData 目录中,以避免在自动更新我们的应用程序时(当它存储在 Program Files 中时)出现权限问题。我们不会让用户选择安装应用程序的位置。我们收到了非管理员用户的投诉,安装程序将应用程序存储在管理员的 AppData 目录中(当然在 UAC 之后),而不是当前用户的 AppData 目录中,这会阻止该应用程序在未来运行。

首先,我有 DefaultDirName={userappdata}\{#MyAppName}。然后我尝试了 DefaultDirName={commonappdata}\{#MyAppName}。然后我尝试将其与 PrivilegesRequired=lowest 一起尝试,甚至将 PrivilegesRequired=none 作为 Make InnoSetup installer request privileges elevation only when needed建议的问题。

这是我现在的脚本,以防我遗漏一些明显的东西:

; Script generated by the Inno Setup Script Wizard.
;SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Teamwork Chat"
#define MyAppVersion "0.10.0"
#define MyAppPublisher "Digital Crew, Ltd."
#define MyAppURL "http://www.teamwork.com/"
#define MyAppExeName "TeamworkChat.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{0F063485-F5AF-4ADE-A9F9-661AB3BAA661}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={userappdata}\{#MyAppName}
DisableDirPage=yes
DefaultGroupName={#MyAppName}
OutputDir=E:\chat-client\dist
OutputBaseFilename={#MyAppName}_for_Windows32_Installer-{#MyAppVersion}
SetupIconFile=E:\chat-client\icons\teamwork_chat.ico
WizardImageFile=E:\chat-client\icons\chatWizardImageFile.bmp
Compression=lzma
SolidCompression=yes
PrivilegesRequired=none

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

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

[Files]
Source: "E:\chat-client\dist\TeamworkChat\win32\TeamworkChat.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\chat-client\dist\TeamworkChat\win32\ffmpegsumo.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\chat-client\dist\TeamworkChat\win32\icudtl.dat"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\chat-client\dist\TeamworkChat\win32\libEGL.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\chat-client\dist\TeamworkChat\win32\libGLESv2.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\chat-client\dist\TeamworkChat\win32\nw.pak"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

编辑

我已经更改了两个选项,但仍然没有运气;

PrivilegesRequired=lowest
...
[Icons]
...
Name: "{userdesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

编辑 2:

我已经添加了 runasoriginaluser 标志并生成了一个新的 AppId (GUID) 但仍然没有成功;

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent runasoriginaluser

编辑 3:

我创建了一个简单的 GitHub repository包含源文件和 Inno 脚本。

编辑 4:

我一直在 Windows 8.1 上进行测试。它似乎在 Windows 7 上编译并在 Windows 8 上运行时有效,但在 Windows 8 上编译并在 8 上运行时似乎无效。

编辑 5:

现在已经解决了,但是为了解决关于 Edit 4 的问题,它不仅仅在我的机器上工作。它适用于其他 Windows 8 机器。一定是一些奇怪的缓存或其他东西(即使我更改了 AppId)。

最佳答案

从您问题的措辞来看,如果我对您的理解正确的话,这听起来像是因为您正在“使用管理员帐户验证以运行安装”。如果是这种情况,并且您在 UAC 提示符下输入不同的帐户(与您登录时使用的帐户不同),则当前用户实际上成为您刚刚在 UAC 提示符下输入的管理员帐户,而不是您登录的帐户在与。因此,只要您被要求使用 UAC 提升安装,它就不会最终出现在登录用户的 AppData 目录中。

您可能需要做的是使用 runasoriginaluser 函数,它将使用登录的用户凭据而不是您在 UAC 提示符下输入的帐户,或者查找导致 UAC 提升提示符的原因.

另见 Inno Setup Creating registry key for logged in user (not admin user) .

有关 Installation Context 的 MSDN 文档也可能有用。

关于windows - Inno Setup 总是安装到管理员的 AppData 目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29376898/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com