2011-07-20 48 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

相關問題