2010-01-04 67 views
2

我想在同一個系統上多次安裝相同的應用程序,例如兩個用戶使用兩種不同的Web服務(每個都有自己的)。根據用戶輸入更改AppID和AppName

  1. 在我的安裝腳本我想根據用戶輸入改變AppIDAppName(例如我的默認AppName="Service App"應改爲AppName="Service App One"如果用戶輸入「1」)。

  2. 以上更改應反映在「選擇開始菜單文件夾」頁面。

  3. 如何捕獲「選擇開始菜單文件夾」和「選擇目標位置」嚮導頁面的下一次單擊事件?這是驗證用戶輸入所必需的。

回答

0

嗨,謝謝你的回答後,我找到了自己的問題的答案,然後意識到也許我沒有正確地問問題。

需要的輸出是在開始菜單下有兩個單獨安裝的應用程序和他們自己的卸載程序,並且認爲更改Appid和Appname可以解決問題。

這裏就是我所做的

#define MyAppName "My Application" 

[Setup] 
DefaultDirName={pf}\Application\MyApp 
DefaultGroupName={#MyAppName} 

上述兩個要求的編輯這是可能的使用自定義頁面下面

WizardForm.DirEdit.Text := 'for DefaultDirName' (Select Destination Location") 
WizardForm.GroupEdit.Text:= 'DefaultGroupName' 

WizardGroupValue用於讀取「選擇開始菜單」

用於訪問內置嚮導中的下一個事件我使用以下內容

//Validate Select Start Menu and Destination values 
function NextButtonClick(CurPageID: Integer): Boolean; 
var 
    ResultCode: Integer; 

begin 
    case CurPageID of 
    wpSelectDir: 
     begin 
     //Do validation 

     end; 
    wpSelectProgramGroup: 
     begin 
     //Do validation 

     end; 
    end; 

    Result := True; 
end; 
2

這不是您的問題的完整答案,但我想我會反正顯示它。如果你正在使用腳本,你可以把它作爲一個起點。

在我的腳本中,我希望版權年(AppCopyright)反映當前年(腳本構建時)。

我使用以下代碼:

AppCopyright=2003-{code:TodayAsYYYY} © E.De.L.Com bvba 

通知的{代碼:FunctionName}

在在腳本的末尾的[代碼]部分我有以下程序:

function TodayAsYYYY(param:string) : string; 
begin 
    Result := GetDateTimeString('yyyy', #0, #0); 
end; 

function TodayAsYYYYMMDD(param:string) : string; 
begin 
    Result := GetDateTimeString('yyyymmdd', #0, #0); 
end; 

正如我所說,這不是一個完整的答案。但是我每年使用InnoSetup的時間可能是1,2周,所以我不能再幫你了。無論如何,希望它有幫助。

+0

我知道這是一箇舊帖子,它確實與手邊的問題無關,但我喜歡你的方法來解決一個古老的問題!真棒解決方案。感謝分享。 – Jeff 2010-08-13 13:14:05

+0

@Jeff:任何爲upvote :) – Edelcom 2010-08-13 14:52:35

3
  1. AppID可以包括{code...}常數(見Inno Setup的文檔),所以你可以自由添加自定義嚮導頁面,進入附加字符串是AppID的一部分。我不認爲這樣做對於AppName是有意義的,因爲根據文檔它僅在嚮導中用於顯示目的。

  2. 您應該在「選擇目標位置」頁面前插入自定義輸入頁面,並嘗試使用常量DefaultDirName,並使用用戶之前輸入的值。

  3. 請參閱CodeDlg.iss用於添加嚮導頁面的示例腳本和NextButtonClick處理程序。

+0

這不起作用:(在顯示任何嚮導之前調用代碼塊 – 2017-09-20 17:07:20