此问题适用于Windows Vista!
我有一个通常无需管理权限的应用程序.有一个活动确实需要管理权限但我不想以更高的权限启动应用程序本身,因为我知道大部分时间用户甚至不使用该功能.
我正在考虑某种方法,通过该方法,我可以在某些事件上提升应用程序的权限(例如按下按钮).例:

如果用户单击此按钮,则会提示他使用UAC对话框或同意.我怎样才能做到这一点?
我想将我的应用程序存储在当前用户的AppData目录中,以避免在自动更新我们的应用程序时(当它存储在Program Files中时)的权限问题.我们不会向用户提供安装应用程序的位置选项.我们收到非管理员用户的抱怨,安装程序将应用程序存储在管理员AppData目录中(当然是在UAC之后),而不是当前用户的AppData目录,这会阻止应用程序在将来运行.
首先,我有DefaultDirName={userappdata}\{#MyAppName}.然后我试了一下DefaultDirName={commonappdata}\{#MyAppName}.然后我想,随着PrivilegesRequired=lowest甚至是PrivilegesRequired=none作为制作InnoSetup安装程序要求特权提升,只有当需要的问题建议.
这是我现在的脚本,以防我遗漏了一些明显的东西:
; 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 …关于创建(Inno Setup)安装程序的一个非常常见的问题是围绕从使用提升/管理员权限运行的安装程序访问/修改特定用户(当前登录用户)的配置文件.
这样做有许多缺点,并且容易出错.
所有现有的答案都包含问题的一部分(注册表,文件,桌面图标等).这个问题的目的是通过所有可能的方法收集解决全球问题的答案.
我将Inno Setup升级到5.6.0,现在编译时得到警告:
警告:[Setup]节指令“ PrivilegesRequired”设置为“ admin”,但脚本使用了每个用户区域(HKCU,userappdata,userdesktop)。无论Windows的版本如何,如果安装是管理性的,则应谨慎进行每个用户区域的更改:此类更改可能无法实现您的预期。有关更多信息,请参见帮助文件。
我明白这是在说什么。在本[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文件夹中。程序启动时,它将查找所有丢失的文件,并从该公共位置获取它们。
因此,唯一的问题与这两个快捷方式有关。迎合捷径的正确方法是什么?由于通常情况下,安装程序会添加快捷方式。
我正在使用Inno Setup(http://www.jrsoftware.org/isinfo.php)为我的JavaFX应用程序创建本机包.
我想创建一个自定义步骤,询问用户是否需要"按用户"或"每台机器"安装,以便允许非特权用户和管理员安装软件.
Inno Setup可以实现这一点吗?如果是,你可以提供跟踪的痕迹吗?
看一下这个截图
有没有办法在 VCL 样式中使用语言选择器(Inno Setup)?如何?
我想使用如下脚本
function InitializeSetup(): Boolean;
begin
  Result := not IsAdminLoggedOn;
  if Result then
  begin
检查用户是否是管理员。
但是如果用户是管理员,那么我该怎么办,然后安装A.txt在C:\program files\ABC,否则安装在D:\TEST?
我可以写一些东西来连接[Files]吗?
因为我也想在安装文件时使用检查路径,如果我可以结合起来[Code],[Files]对我来说可能会更容易。
请原谅我缺乏知识,并提前致谢。
我试过用这个
[Files]
Source: "..\ABC\CDE.txt"; DestDir: "{code:GetDirName}\IJK"; \
    Check: DirExists(ExpandConstant('C:\Program Files\FGH'))
但如果我想在更多路径中安装更多文件,我不知道如何编写代码。
这个不起作用:
[Files]
Source: "..\ABC\CDE.txt"; DestDir: "{code:GetDirName}\IJK"; \
    Check: DirExists(ExpandConstant('C:\Program Files\FGH'))
我正在使用C#开发桌面应用程序并使用Inno setup编译器创建设置.
让我解释一下应用功能,
我使用Inno Setup创建了应用程序安装程序所有用户(即应用程序可以安装在admin/non admin PC中).
//all user
PrivilegesRequired=lowest
安装应用程序时,我想在中创建注册表项HKLM.为此,我在Inno Setup脚本中添加了注册表项,如下所示
[Registry]
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\TestKey"; Permissions: users-modify; \
    Flags: uninsdeletekey createvalueifdoesntexist; ValueType: string; \
    ValueName: "SOAPAddress"; ValueData: "ABC"
安装应用程序注册表项时未创建其抛出异常
---------------------------
Error
---------------------------
Error creating registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TestKey
RegCreateKeyEx failed; code 5.
Access is denied.
Click Retry to try again, Ignore to proceed anyway, or Abort to cancel installation.
请帮帮我,如何HKLM使用Inno Setup编译器创建注册表项.
我已经在VS2010中检查了它的创建注册表项,但是安装程序无法运行非管理员PC.
提前致谢!
inno-setup ×7
pascalscript ×2
privileges ×2
.net ×1
c# ×1
executable ×1
installation ×1
installer ×1
javafx ×1
uac ×1
windows ×1