2011-07-20 83 views
3

当我以管理员用户身份运行我的安装脚本时,它将开始菜单条目放入“所有用户”配置文件中。我想要将开始菜单项放置在当前用户的配置文件中,如果他们是管理员用户并选择安装“Just for me”。如何为管理员用户创建“仅供我”安装?

我可以通过为#define选择两个值中的一个来完成,但我无法弄清楚如何创建一个有条件包含的常量。如果选择了“Just for me”安装,我已经有一个[Code]部分例程返回true。这里是场景:

#define StartMenuLocation = "{somegroup}"  ; check JustForMeInstall 
#define StartMenuLocation = "{anothergroup}" ; check AllUsersInstall 
... 

[Icons] 
Name: "{#StartMenuLocation}\{#MyAppName}" ; Filename: "{app}\{#ExeName}" ; parameters: "{#CommandArgs}" ; comment: "Starts {#MyAppName} {#MyAppVersion}" 
... 

[Code] 

function JustMeInstall : boolean ; 
begin 
Result := (InstallationType = itJustMe) ; 
end ; 

function AllUsersInstall: boolean ; 
begin 
Result := (InstallationType = itAllUsers) ; 
end ; 

其中#defines的“检查”参数不支持,当然被忽略。

因此,其实两个问题:

  • 什么常数我用它来定义开始菜单文件夹位置。 - InnoSetup提供{group},但该文件夹是在所有用户配置文件下创建的,除非安装该应用程序的用户没有管理权限,在这种情况下,它是在用户配置文件中创建的。我想为当前用户启动菜单文件夹设置一个常量,该文件夹在该用户以管理员用户身份登录时起作用。

  • 如何实现如上所示的条件#define(无论如何,这个问题之外的普遍兴趣)。

回答

4

您设置PrivilegesRequired指令到最低,这意味着创新科技将安装为当前用户只不管是否它运行作为管理员或不是。 (这也意味着你不能什么安装到系统中的位置。

注意,这不能在运行时进行设置,所以你需要创建两个设置,如果你想允许这两种类型。

如果你只是想改变图标的​​位置,可以有条件地使用{userprograms}\{groupname}{commonprograms}\{groupname}

+1

感谢@Deanna你反斜线得到了由标记吞噬 - 它应该阅读'{} userprograms \ {组名}或{commonprograms} \ {groupname}'。 – rossmcm

+0

谢谢,更新:) – Deanna

相关问题