1. 程式人生 > >Inno Setup 詳解中文資料

Inno Setup 詳解中文資料

其一:使用教程

一、Inno Setup 是什麼?

   Inno Setup 是一個免費的 Windows 安裝程式製作軟體。第一次發表是在 1997 年,Inno Setup 今天在功能設定和穩定性上的競爭力可能已經超過一些商業的安裝程式製作軟體。

二、Inno Setup 能幹什麼?

  1.支援現在所有正在使用的 Windows 版本: 7, 2008 R2, Vista, XP, 2008, 2003, 2000, Me, 98, 95, 和 NT 4.0 (不需要服務包)。

  2.廣泛支援在 64 位 的 Windows XP and Windows Server 2003 版本的作業系統中的 64 位應用程式安裝。支援 x64 和 Itanium 兩個結構。(在 Itanium 結構中,必須在 64 位模式安裝 Service Pack 1。)

  3.支援建立單個 EXE 格式的安裝程式,使你的程式可以很方便地在網路上發表。同時也支援磁碟延伸。

  4.標準的 Windows 2000/XP 樣式嚮導介面。

  5.定製安裝型別,例如:完整安裝,最小安裝,自定義安裝。

  6.完整的解除安裝功能。

  7.檔案安裝:

    包括完全的“壓縮”支援,bzip2 和 7-Zip LZMA 檔案壓縮。安裝程式可以比較檔案版本資訊,替換正在使用的檔案,使用共享檔案計數,註冊 DLL/OCX 和型別庫,以及安裝字型。

  8.可以在任意地方建立快捷方式,包括開始選單和桌面。

  9.建立登錄檔 和 .INI 條目。

  10.在安裝之前、之中或之後可執行其他程式。

  11.支援多語言安裝。

  12.支援密碼和加密安裝。

  13.支援數字簽名 、安裝和解除安裝。

  14.後臺安裝和後臺解除安裝。

  15.Unicode 安裝。(Windows 2000/XP 或更高)

  16.完整的 Pascal 指令碼 引擎選項於執行期高階自定義安裝和解除安裝。

  17.全部原始碼公開 (Borland Delphi 2.0-5.0 和 2009)。

二、建立安裝程式的方式:指令碼

    安裝程式用編譯指令碼的方式建立,指令碼其實就是一個類似 .INI 檔案格式的 ASCII 碼文字檔案。(它不象你想象的那麼複雜!)。 Unicode Inno Setup支援 UTF-8 編碼文字檔案。

    指令碼用一個“.iss”(表示 Inno Setup Script指令碼) 的副檔名。指令碼控制著安裝程式的所有方面。由它指定哪些檔案將被安裝到什麼地方,在哪裡建立快捷方式,且被命名為什麼。

    指令碼檔案一般可以用安裝程式編譯器程式內建的編輯器進行編輯。在你編寫完指令碼後,下一個最終步驟就是選擇安裝程式編譯器中的“編譯”。建立完成後,就可以執行根據你指令碼編譯的安裝程式了。按預設,這個安裝程式建立在包含指令碼檔案目錄下的名為“輸出”目錄中。

如果你想看看它是怎樣工作的,啟動安裝程式編譯器,單擊“檔案 | 開啟”,並選擇位於 Inno Setup 安裝目錄下的 Examples 子目錄中的一個指令碼檔案。(你也可以將這些示例指令碼作為你自己編寫指令碼的模板。)

Inno setup指令碼示範(註釋)

[Setup]

;程式名

AppName=ISsample

;版本號

AppVerName=ISsample 1.0.0.0

;釋出者名

AppPublisher=Hkiss

;相關連線

AppPublisherURL=http://www.yan.com/

AppSupportURL=http://www.yan.com/

AppUpdatesURL=http://www.yan.com/

;預設安裝目錄

DefaultDirName={pf}\ISsample

;預設開始選單名

DefaultGroupName=ISsample

;是否開啟->可選安裝開始選單項

;AllowNoIcons=yes

;安裝協議

;LicenseFile=C:\Example\原始檔案\agreement.txt

;安裝前檢視的文字檔案

;InfoBeforeFile=C:\Example\原始檔案\Setup_New.txt

;安裝後檢視文字檔案

;InfoAfterFile=C:\Example\原始檔案\Setup_Old.txt

;輸出資料夾

OutputDir=C:\Example\InnoSetup\out

;輸出檔名

OutputBaseFilename=setup

;安裝圖示

SetupIconFile=C:\Example\原始檔案\title.ico

;安裝需要輸入密碼

;Password=123

;Encryption=yes

;壓縮相關

Compression=lzma

SolidCompression=yes

;可以讓使用者忽略選擇語言相關

ShowLanguageDialog = yes

;備註版本資訊

VersionInfoCompany=HTTP://www.Hkiss.COM

VersionInfoDescription=ISsample 漢化增強版

VersionInfoVersion=1.0.0.0

VersionInfoCopyright=Copyright (C) 2007-2008 Hkiss

;製作選擇語言

[Languages]

Name: "chs"; MessagesFile: "compiler:Default.isl" ;LicenSeFile :"C:\Example\原始檔案\chs\agreement.txt"

Name: "en"; MessagesFile: "compiler:Languages\English.isl";LicenSeFile :"C:\Example\原始檔案\en\agreement.txt"

;使用者定製任務

[Tasks]

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

Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

Name: "Tasks_1" ; Description:"使用者自定義任務1"; Flags: unchecked

Name: "Tasks_2" ; Description:"使用者自定義任務2"; Flags: unchecked

;選擇了元件才會出現的定製任務

Name: "Tasks_3" ; Description:"使用者自定義任務3";Components: c1 ; Flags: unchecked

;檔案安裝

[Files]

;多語言安裝環境設定    公共引數Languages 來設定

Source: "C:\Example\原始檔案\enfile.txt"; DestDir: "{app}"; Languages: en ; Flags: ignoreversion

Source: "C:\Example\原始檔案\chsfile.txt"; DestDir: "{app}"; Languages: chs ; Flags: ignoreversion

;使用者自定義任務 Tasks

Source: "C:\Example\原始檔案\Tasks\tasks_1.txt"; DestDir: "{app}\Tasks"; Flags: ignoreversion ;Tasks : Tasks_1

Source: "C:\Example\原始檔案\Tasks\tasks_2.txt"; DestDir: "{app}\Tasks"; Flags: ignoreversion ;Tasks :Tasks_2

Source: "C:\Example\原始檔案\Tasks\tasks_Components.txt"; DestDir: "{app}\Tasks"; Flags: ignoreversion ;Tasks :Tasks_2

;使用者定義元件安裝

Source: "C:\Example\原始檔案\Components\Components_1.txt"; DestDir: "{app}\Components"; Flags: ignoreversion ; Components: a1;

Source: "C:\Example\原始檔案\Components\Components_2.txt"; DestDir: "{app}\Components"; Flags: ignoreversion ; Components: a2;

Source: "C:\Example\原始檔案\Components\Components_3.txt"; DestDir: "{app}\Components"; Flags: ignoreversion ; Components: a3;

Source: "C:\Example\原始檔案\Components\Components_4.txt"; DestDir: "{app}\Components"; Flags: ignoreversion ; Components: a1 a2 a3;

;使用者註冊自定義Dll檔案      regserver 註冊 noregerror 不顯示錯誤資訊

Source: "C:\Example\原始檔案\jmail.dll"; DestDir: "{app}"; Flags: ignoreversion regserver

;新增自述檔案

Source: "C:\Example\原始檔案\ISsample.txt"; DestDir: "{app}"; Flags: ignoreversion

;新增一個檔案到快取資料夾{Tmp} deleteafterinstall 安裝後刪除

Source: "C:\Example\原始檔案\test.exe"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall

Source: "C:\Example\原始檔案\ISsample.chm"; DestDir: "{app}"; Flags: ignoreversion

Source: "C:\Example\原始檔案\ISsample.exe"; DestDir: "{app}"; Flags: ignoreversion

Source: "C:\Example\原始檔案\ISsample.dll"; DestDir: "{app}"; Flags: ignoreversion

Source: "C:\Example\原始檔案\ISsample.ini"; DestDir: "{app}"; Flags: ignoreversion

Source: "C:\Example\原始檔案\ISsample.rar"; DestDir: "{app}"; Flags: ignoreversion

Source: "C:\Example\原始檔案\ISsample_sys.dll"; DestDir: "{win}\System32"; Flags: ignoreversion

Source: "C:\Example\原始檔案\log\*"; DestDir: "{app}\log"; Flags: ignoreversion recursesubdirs createallsubdirs

; 注意: 不要在任何共享系統檔案上使用“Flags: ignoreversion”

;安裝型別設定

[Types]

Name: Full ;Description:"完全安裝"; Flags: iscustom

Name: Compact ;Description:"簡潔安裝";

Name: Custom; Description:"自定義安裝";

;元件安裝

[Components]

Name: c1; Description: "自定義任務3" ; Types: Full

Name: a1; Description: "安裝Components_1"; Types: Full Compact Custom ;

Name: a2; Description: "安裝Components_2"; Types : Full   Compact

Name: a3; Description: "安裝Components_3"; Types : Full

;開始選單,桌面快捷方式

[Icons]

Name: "{group}\ISsample"; Filename: "{app}\ISsample.exe"

Name: "{group}\{cm:ProgramOnTheWeb,ISsample}"; Filename: "http://www.yan.com/"

Name: "{group}\{cm:UninstallProgram,ISsample}"; Filename: "{uninstallexe}"

Name: "{commondesktop}\ISsample"; Filename: "{app}\ISsample.exe"; Tasks: desktopicon

Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\ISsample"; Filename: "{app}\ISsample.exe"; Tasks: quicklaunchicon

;新增一個幫助文擋

Name: {group}\ISsample 1.0.0.0 幫助文件;Filename: {app}\ISsample.chm

;用來在程式安裝完成後 在安裝程式顯示最終對話方塊之前執行程式 常用與執行主程式 顯示自述檔案 刪除臨時檔案

[Run]

Filename: "{app}\ISsample.exe"; Description: "{cm:LaunchProgram,ISsample}"; Flags: nowait postinstall skipifsilent

Filename: "{app}\ISsample.txt"; Description: "檢視顯示自述檔案"; Flags: postinstall skipifsilent shellexec

;更改顯示在程式中顯示的訊息文字

[Messages]

BeveledLabel=HKiss科技

;解除安裝對話方塊說明

ConfirmUninstall=您真的想要從電腦中解除安裝ISsample嗎?%n%n按 [是] 則完全刪除 %1 以及它的所有元件;%n按 [否]則讓軟體繼續留在您的電腦上.

;定義解壓說明

;StatusExtractFiles=解壓並複製主程式檔案及相關庫檔案...

;用與在使用者系統中建立,修改或刪除登錄檔健值

[Registry]

Root: HKLM ;SubKey:"Software\ISsample";ValueType:dword;ValueName:config;ValueData:10 ;Flags:uninsdeletevalue

;在執行指令碼

;注意:下面是code,因為與論壇使用的程式碼標籤重名,改為了c0de,需要改回去。

[c0de]

//全域性變數

var MyProgChecked: Boolean;

//判斷程式是否存在

//初始華程式事件

function InitializeSetup(): boolean;

var Isbl: boolean;         //宣告變數

var Isstr: string;

begin       //開始

Isbl := true;             //變數賦值

Isstr := '歡迎';

if RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\ISsample', 'config') then

begin

    MsgBox('已安裝過,請先解除安裝在安裝',mbConfirmation, MB_OK);

    isbl := false;

end else

begin

   //MsgBox('無值',mbConfirmation, MB_OK);

     isbl := true;

end;

//下面是個麻煩的 條件語句 end else 注意

//if MsgBox(Isstr, mbConfirmation, MB_OKCANCEL) = IDOK then

//begin

// isbl := true;

// MsgBox('執行了', mbConfirmation, MB_OK);

//end else

//begin

// isbl := false;

//MsgBox('執行了', mbConfirmation, MB_OK);

//end;

Result := Isbl;

end;       //結束

procedure CurStepChanged(CurStep: TSetupStep);

var Isstr :string;

begin

if CurStep=ssInstall then       //實際安裝前呼叫

begin

    //MsgBox('CurStepChanged:實際安裝前呼叫', mbConfirmation, MB_OKCANCEL);           //安裝完成後呼叫

end;

if CurStep=ssPostInstall then

begin

    Isstr := ExpandConstant('{tmp}\tmp.rar');

//    if FileExists(Isstr) then

//    begin

//      MsgBox('檔案存在',mbConfirmation, MB_OK);

//    end else

//    begin

//      MsgBox('檔案不存在',mbConfirmation, MB_OK);

//    end;

   // MsgBox('CurStepChanged:實際安裝後呼叫', mbConfirmation, MB_OKCANCEL);

end;

end;

//下一步 按鈕按鈕 事件

function NextButtonClick(CurPageID: Integer): Boolean;

var ResultCode: Integer;

var IsSetup : Boolean;

begin

IsSetup := true ;

case CurPageID of

    wpSelectDir:

       MsgBox('NextButtonClick:' #13#13 'You selected: ''' + WizardDirValue + '''.', mbInformation, MB_OK);   //WizardDirValue路徑

    wpSelectProgramGroup:

       MsgBox('NextButtonClick:' #13#13 'You selected: ''' + WizardGroupValue + '''.', mbInformation, MB_OK); //開始選單名

    wpReady:

      begin

       if not RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Test', 'config') then   begin

          if MsgBox('程式執行需要Test.ext,是否安裝!', mbConfirmation, MB_YESNO) = idYes then begin

           ExtractTemporaryFile('test.exe');

            if not Exec(ExpandConstant('{tmp}\test.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) then

              MsgBox('Test.exe出錯:' #13#13 ' ' + SysErrorMessage(ResultCode) + '.', mbError, MB_OK);

          end else begin

                IsSetup := false ;

          end ;

          BringToFrontAndRestore();

        end;

      end;

end;

Result := IsSetup;

end;

三.指令碼格式概述

    Inno Setup 指令碼大致上分成若干的段,各段掌管不同的功能。每個段控制安裝程式部分的某個不同方面。每個段用包含在中括號“ [] ”中的段名開始,每個段裡面是一些相關的條目。

    其中有兩種不同主要型別的段: 有些就象 [Setup] 段,條目包含指令名和值 (格式為 Directive=Value),還有一些就象 [Files] 段,條目被引數分隔。

    這裡是一個例子:

[Setup]

AppName=My Program

[Files]

Source: "MYPROG.EXE"; DestDir: "{app}"

    注意,在指令碼中指定多個相同名字的段是合法的。

    你可以通過在行起始位置加個分號“;”在指令碼中寫入“註釋” (編譯時被編譯時忽略)。例如:

; 這是一條註釋,放在這裡只是要提醒我自己...

    支援 A C-like #include 指令,從個別檔案放入行到 #include 指令位置的指令碼。語法是:

#include "filename.txt"

    如果檔名中未提供完整的路徑,編譯將在包含 #include 指令的同一目錄中查詢。檔名用“compiler:”作為字首的場合中,在編譯器目錄中查詢檔案。

四、段中引數

    所有指令碼中的段,除 [Setup]、[Messages]、[CustomMessages]、[LangOptions] 和 [Code] 段之外,包含的行中可有多個各自的引數。下列是 [Files] 段中的一個舉例:

[Files]

Source: "MYPROG.EXE"; DestDir: "{app}"

Source: "MYPROG.CHM"; DestDir: "{app}"

Source: "README.TXT"; DestDir: "{app}"; Flags: isreadme

    每個引數都由一個名字組成,然後跟隨一個冒號,然後是一個值。除非另外說明,如果引數未指定,將設定為一個預設值。一行中多個引數用分號隔開,並且可以以任何次序列出。

    引數的值如果包含一個使用者定義的字串時,一般來說用雙引號 (") 包含,例如象檔名。引號使用不是必需的,但這樣做可能會在值中的首位或末位被加入空格、分號和雙引號。

    在要引用的值中使用一個雙引號字元,用兩個連續的雙引號字元,例如:

"This "" contains "" embedded "" quotes"

    安裝程式編譯器會將它視作:

This " contains " embedded " quotes

    如果你希望引數值是一個單個雙引號字元,用四個雙引號字元: """"。外面的兩個用於包含引用的字元;內部兩個寫入單個的雙引號字元。

五、常量

    指令碼中的專案大部分可以嵌入常量。這些預定義的字元被包含在大括弧“ { }” 中。安裝程式或解除安裝程式會根據使用者選擇和系統配置將這些常量翻譯為文字值。例如,{win} 在大部分系統中會被翻譯為“C:\WINDOWS”。

    字元“{”視作為常量開始。如果你想將它作為實際字元使用,你必須使用兩個連續的“{”字元。(對於“}”則不需要。)

    當在常量後面直接跟隨一個反斜槓時,如果常量的值末端已經包含了一個反斜槓號,安裝程式或解除安裝程式將自動刪除該反斜槓號。 因此,如果一個特殊常量值是“C:\”,{constantname}\file 將翻譯為“C:\file”,而不是“C:\\file”。如果你想防止意外,將反斜框放入 { } 字元中,例如,{app}{\}。

    下面是支援的常量列表。

目錄常量

{app}

使用者在安裝嚮導中的選擇目標位置頁中選定的應用程式目錄。

例如: 如果你在專案中指定了 {app}\MYPROG.EXE,使用者選擇了“C:\MYPROG”作為應用程式目錄,安裝程式將該檔案安裝到“C:\MYPROG\MYPROG.EXE”。

{win}

系統的 Windows 目錄。

例如: 如果你在專案中使用了 {win}\MYPROG.INI,且系統的 Windows 目錄是“C:\WINDOWS”,則安裝程式或解除安裝程式將它傳送到“C:\WINDOWS\MYPROG.INI”。

{sys}

系統的 Windows System 目錄 (在 NT 平臺上是 System32)。

例如: 如果你在專案中使用了 {sys}\CTL3D32.DLL,且系統的 Windows System 目錄是“C:\WINDOWS\SYSTEM”,安裝程式或解除安裝程式將它傳送到“C:\WINDOWS\SYSTEM\CTL3D32.DLL”。

    在 64 位 Windows 中,按預設,the System32 path returned by this constant maps to the directory containing 32-bit system files, just like on 32-bit Windows. (This can be overridden by enabling 64 位模式.)

{syswow64}

在 64 位 Windows 中,系統的 SysWOW64 目錄,一般是“C:\WINDOWS\SysWOW64”。這是在 32 位系統檔案駐留的真實目錄。在 32 位 Windows 中,32 位系統檔案駐留在“System32”或“System”中,不是在單獨的的“ {syswow64}” 目錄,因此如果在這種情況下使用,這個常量將解析到與 {sys} 相同的目錄。

Do not use this constant unless you have a specific need to obtain the name of the actual directory in which 32-bit system files reside. Gratuitously using {syswow64} in places where {sys} will suffice may cause problems. (請查閱幫助文件 [Files] 段 sharedfile 標記示例。)

{src}

安裝程式檔案所在目錄。

例如: 你在專案中使用了 {src}\MYPROG.EXE,且使用者正在從“S:\”進行安裝,安裝程式將它傳送到“S:\MYPROG.EXE”。

{sd}

Windows 系統所在的驅動器。一般來說是“C:”。在 Windows NT 平臺,這個目錄常量等同於 SystemDrive 環境變數。

{pf}

程式資料夾位置。系統的 Program Files 目錄的路徑。{pf} 等於 {pf32},除非安裝程式運行於 64 位模式,在這種情況下它等於 {pf64}。

{pf32}

32 位程式資料夾。系統的 32 位程式檔案目錄路徑。一般來說它在 32 位 Windows 是“C:\Program Files”,在 64 位 Windows 中是“C:\Program Files (x86)”。

{pf64}

僅指 64 位 Windows: 64 位程式資料夾。系統的 64 位程式檔案目錄路徑,一般來說是“C:\Program Files”。如果嘗試在 32 位的 Windows 中展開這個常量,將會出現異常。

{cf}

公共檔案。系統公共檔案目錄路徑。{cf} 等於 {cf32},除非安裝程式運行於 64 位模式,在這種情況下它等於 {cf64}。

{cf32}

32 位公共檔案。系統的 32 位公共檔案目錄路徑。一般來說它在 32 位 Windows 是“C:\Program Files\Common Files”,在 64 位 Windows 中是“C:\Program Files (x86)\Common Files”。

{cf64}

僅指 64 位 Windows: 64 位公共檔案。系統的 64 位公共檔案目錄路徑,一般來說是“C:\Program Files\Common Files”。如果嘗試在 32 位的 Windows 中展開這個常量,將會出現異常。

{tmp}

用於安裝程式或解除安裝程式的臨時目錄。這不是使用者的 TEMP 環境變數值。它是在安裝程式啟動後在使用者臨時目錄中建立的子目錄 (象名為“C:\WINDOWS\TEMP\IS-xxxxx.tmp”)。目錄中的所有檔案和子目錄在安裝程式或解除安裝程式退出時刪除。在安裝時,這主要用於提取在 [Run] 段執行、但安裝後不再需要的檔案。

{fonts}

字型目錄。通常是在 Windows 下面的名字“FONTS”的目錄。

{dao}

DAO 目錄,等同於 {cf}\Microsoft Shared\DAO。

{dotnet11}

32位 .NET Framework 版本 1.1 根目根。

如果所使用的系統上沒有 .NET Framework 版本 1.1,則顯示內部錯誤原因。

{dotnet20}

.NET Framework 版本 2.0 根目根。 {dotnet20} is equivalent to {dotnet2032} unless the install is running in 64位模式, in which case it is equivalent to {dotnet2064} .

如果所使用的系統上沒有 .NET Framework 版本 2.0,則顯示內部錯誤原因。

{dotnet2032}

32位 .NET Framework 版本 2.0 根目根。

如果所使用的系統上沒有 .NET Framework 版本 2.0,則顯示內部錯誤原因。

{dotnet2064}

僅64位Windows: 64位 .NET Framework 版本 2.0 根目根。

如果所使用的系統上沒有 .NET Framework 版本 2.0,則顯示內部錯誤原因。

外殼資料夾常量

Inno Setup 支援其它目錄常量設定,作為外殼資料夾常量引用。它們可以與其它目錄常量相同方法使用。

“common”常量引用到所有使用者配置檔案。

下面的“user”常量引用到當前登入的使用者配置檔案進行安裝。This user is often not the same as the currently logged-in user, so use the "user" constants with caution.

除非有另外的註釋,外殼資料夾常量工作於 Inno Setup 支援的所有 Windows 版本,包括 Windows 95 和 NT 4.0。

* = 如果登入的使用者缺少管理員許可權,或作業系統是 Windwos 95/98/Me,“common”結構對映到“user”結構。

{group}

開始選單資料夾路徑,由使用者在安裝程式的選擇開始選單資料夾嚮導頁中選定。在 Windows NT/2000/XP/2003,這個資料夾總是建立在所有使用者配置檔案下,除非非使用者安裝程式的使用者沒有管理員許可權,這種情況下它將建立在使用者配置檔案下。

{localappdata}

本地Application Data資料夾。

{sendto}

當前使用者的 Send To 資料夾路徑。(這裡不是指公共 Send To 資料夾。)

{userappdata} & {commonappdata}

Application Data資料夾路徑。

{userdesktop} & {commondesktop} *

桌面資料夾路徑。

{userdocs} & {commondocs}

我的文件 (My Documents) 資料夾路徑 (在 NT 4.0,私人資料夾)。

{userfavorites} & {commonfavorites} *

收藏夾資料夾路徑。這些常量設定必須 至少“4.1, 4” MinVersion 設定。只在 Windows 2000 和更高版本支援 {commonfavorites};如果在先前的 Windows 版本中使用,它將翻譯為等同於 {userfavorites} 目錄。

{userprograms} & {commonprograms} *

開始選單中程式資料夾路徑。

{userstartmenu} & {commonstartmenu} *

開始選單頂層路徑。

{userstartup} & {commonstartup} *

開始選單啟動資料夾路徑。

{usertemplates} & {commontemplates} *

模板資料夾路徑。僅在 Windows 2000 和更高版本支援 {commontemplates},如果使用的是先前的 Windows 版本,它將被翻譯為等同於 {usertemplates} 目錄。

其它常量

{\}

反斜槓字元。查閱本頁頂部的註釋獲取使用 {\} 和只使用一個 \ 字元之間的差異。

{% NAME | DefaultValue }

嵌入一個環境變數值。

NAME 用於指定要使用的環境變數的名字。

DefaultValue 確定如果指定的變數在使用者系統中不存在時置入的字串。

如果你想在常量內部包含一個逗號、豎條 (“|”),或括弧後半部 (“}”),你必須通過“%-encoding.”先用一個“%”字元然後跟隨它的兩上數字的十六進位制程式碼替換,從而避開它。逗號是“%2c”,豎條是“%7c”括弧後半部是“%7d”。如果你想實際使用“%”,使用“%25”。

NAME 和 DefaultValue 可以包含常量。注意,你不需要將常量中的括弧替換成上面所說的字元;上面所說的括弧後半部只在使用於其它地方時需要替換。

示例:

{%COMSPEC}

{%PROMPT|$P$G}

{cmd}

系統標準命令直譯器的完整路徑名。在 Windows NT/2000/XP/2003,是 Windows\System32\cmd.exe。在 Windows 95/98/Me,是 Windows\COMMAND.COM。注意當展開這個常量時 COMSPEC 環境變數不使用。

{computername}

正在執行安裝程式或解除安裝程式的電腦名 (等同於由 GetComputerName 函式返回的值)。

{drive: Path }

從指定的路徑中提取並返回驅動器卷標和冒號 (例如“C:”)在 UNC 路徑的場合中,它返回伺服器和共享名 (例如“\\SERVER\SHARE”)。

Path 指定路徑。

如果你想在常量內部包含一個逗號、豎條 (“|”),或括弧後半部 (“}”),你必須通過“%-encoding.”先用一個“%”字元然後跟隨它的兩上數字的十六進位制程式碼替換,從而避開它。逗號是“%2c”,豎條是“%7c”括弧後半部是“%7d”。如果你想實際使用“%”,使用“%25”。

Path 可以包含常量。注意,你不需要將常量中的括弧替換成上面所說的字元;上面所說的括弧後半部只在使用於其它地方時需要替換。

示例:

{drive:{src}}

{drive:c:\path\file}

{drive:\\server\share\path\file}

{groupname}

使用者在安裝程式嚮導頁的選擇開始選單資料夾中選定的資料夾名。它不同於 {group},只有名字,不包含路徑。

{hwnd}

(特殊用途) 轉換為安裝程式的背景視窗控制代碼。

{wizardhwnd}

(特殊用途) 轉換為安裝程式的嚮導視窗控制代碼。如果嚮導視窗控制代碼在翻譯完成時不能用,這個控制代碼設定為“0”。

{ini: Filename , Section , Key | DefaultValue }

從 .INI 檔案插入一個值。

Filename 指定要讀取的 .INI 檔案的名字。

Section 指定讀取的段名。

Key 指定讀取的鍵名。

DefaultValue 確定如果指定的鍵不存在時要插入的字元。

如果你想在常量內部包含一個逗號、豎條 (“|”),或括弧後半部 (“}”),你必須通過“%-encoding.”先用一個“%”字元然後跟隨它的兩上數字的十六進位制程式碼替換,從而避開它。逗號是“%2c”,豎條是“%7c”括弧後半部是“%7d”。如果你想實際使用“%”,使用“%25”。

Filename, Section, 和 Key 可以包含常量。注意,你不需要將常量中的括弧替換成上面所說的字元;上面所說的括弧後半部只在使用於其它地方時需要替換。

示例:

{ini:{win}\MyProg.ini,Settings,Path|{pf}\My Program}

{language}

選定語言的內部名字。查閱 [Languages] 段幫助文件獲取更多資訊。

{cm: MessageName }

{cm: MessageName , Arguments }

根據活動語言嵌入一個自定義訊息值。

MessageName 用於指定要讀取的自定義訊息名。查閱 [CustomMessages] 段幫助文件獲取更多資訊。

Arguments 可隨意在訊息值中指定逗號分隔的宣告列表。

如果你想在常量內部包含一個逗號,垂直條 (“|”),或括號 (“}”),你必須使用“%-encoding.”避開它,用“%”字元,後面跟隨它的兩位數十六進位制程式碼替換。逗號是“%2c”,垂直條是“%7c”,括號是“%7d”,如果你想包含一個實際的“%”字元,用“%25”。

每個 Arguments 中的宣告可以包含常量。注意,你不需要避開上面描述的常量中的括號,只有在別處使用這種括號時需要避開。

示例:

{cm:LaunchProgram,Inno Setup}

如果活動語言是簡體中文,上面的示例被翻譯為“執行 Inno Setup”。

{reg:HK xx \ SubkeyName , ValueName | DefaultValue }

插入一個登錄檔值。

HKxx 指定登錄檔根鍵;查閱 [Registry] 段幫助文件獲取可用根鍵列表。

SubkeyName 指定要讀取的子鍵名。

ValueName 指定要讀取的值名;如果你想讀取鍵的“預設”值,將 ValueName 留空。

DefaultValue 確定在指定的登錄檔值不存在,或不是一個字串型別的值 (REG_SZ 或 REG_EXPAND_SZ) 時要插入的字元。

如果你想在常量內部包含一個逗號、豎條 (“|”),或括弧後半部 (“}”),你必須通過“%-encoding.”先用一個“%”字元然後跟隨它的兩上數字的十六進位制程式碼替換,從而避開它。逗號是“%2c”,豎條是“%7c”括弧後半部是“%7d”。如果你想實際使用“%”,使用“%25”。

SubkeyName, ValueName, 和 DefaultValue 可以包含常量。注意,你不需要將常量中的括弧替換成上面所說的字元;上面所說的括弧後半部只在使用於其它地方時需要替換。

示例:

{reg:HKLM\Software\My Program,Path|{pf}\My Program}

{param: ParamName | DefaultValue }

插入一個命令列引數值。

ParamName 指定要讀取的命令列引數名。

DefaultValue 確定如果指定的命令列引數不存在,或它的值不能確定時要插入的字元。

如果你想在常量內部包含一個逗號、豎條 (“|”),或括弧後半部 (“}”),你必須通過“%-encoding.”先用一個“%”字元然後跟隨它的兩上數字的十六進位制程式碼替換,從而避開它。逗號是“%2c”,豎條是“%7c”括弧後半部是“%7d”。如果你想實際使用“%”,使用“%25”。

ParamName 和 DefaultValue 可以包含常量。注意,你不需要將常量中的括弧替換成上面所說的字元;上面所說的括弧後半部只在使用於其它地方時需要替換。

示例:

{param:Path|{pf}\My Program}

如果指定命令列 /Path="c:\My Program",上面的例子翻譯為 c:\My Program。

{srcexe}

安裝程式檔案的完整路徑名,例如“C:\SETUP.EXE”。

{uninstallexe}

由安裝程式提取的解除安裝程式的完整路徑名,例如“C:\Program Files\My Program\unins000.exe”。這個常量一般用於在 [Icons] 段條目建立一個解除安裝圖示。它只在 Uninstallable 設為 yes (預設設定) 時有效。

{sysuserinfoname}

{sysuserinfoorg}

Windows 已許可的名字和組織,這個資訊從登錄檔中讀取。

{userinfoname}

{userinfoorg}

{userinfoserial}

使用者在使用者資訊嚮導頁 (可以通過 UserInfoPage 指令來啟用) 中分別輸入的名字,組織和序列號。一般來說,這些常量用於在 [Registry] 或 [INI] 條目中儲存它們以後要使用的值。

{username}

正在執行安裝程式或解除安裝程式的使用者的名字 (也可以用 GetUserName 函式返回)。

{log}

相關推薦

Inno Setup 中文資料

其一:使用教程 一、Inno Setup 是什麼?    Inno Setup 是一個免費的 Windows 安裝程式製作軟體。第一次發表是在 1997 年,Inno Setup 今天在功能設定和穩定性上的競爭力可能已經超過一些商業的安裝程式製作軟體。 二、Inno Setup 能幹

一文大規模資料計算處理原理及操作重點

摘要: 大資料技術主要針對的是大規模資料的計算處理問題,那麼要想解決的這一問題,首先要解決的就是大規模資料的儲存問題。 一、RAID技術 大資料技術主要針對的是大規模資料的計算處理問題,那麼要想解決的這一問題,首先要解決的就是大規模資料的儲存問題。大規模資料儲存要解決的核心問題有三個方面:

JS資料型別轉換

資料型別分類 基本資料型別 Number | String | Boolean | Null | Undefined | Symbol 複合資料型別 Object 資料型別轉換 1. 顯示型別轉換 Number() | String() | Boo

圖文YUV資料格式

原文連結:http://www.cnblogs.com/azraelly/archive/2013/01/01/2841269.html YUV格式有兩大類:planar和packed。 對於planar的YUV格式,先連續儲存所有畫素點的Y,緊接著儲存所有畫素點的U,隨後是所有畫素點的V。 對

一篇文章資料技術和應用場景

什麼是大資料 說起大資料,估計大家都覺得只聽過概念,但是具體是什麼東西,怎麼定義,沒有一個標準的東西,因為在我們的印象中好像很多公司都叫大資料公司,業務形態則有幾百種,感覺不是很好理解,所以我建議還是從字面上來理解大資料,在維克托邁爾-舍恩伯格及肯尼斯庫克耶編寫的《大資料時代》提到了大資料的4個特徵:

Android典型技術模組開發 pdf 資料

文章目錄 1、介紹 2、章節介紹 1、介紹 Android典型技術模組開發詳解 適合剛步入Android 開發的工作者,對於Android 各個模組能夠很好、很全面的講解

分享《深度學習與計算機視覺演算法原理框架應用》《大資料架構資料獲取到深度學習》PDF資料

下載:https://pan.baidu.com/s/12-s95JrHek82tLRk3UQO_w 更多資料分享:http://blog.51cto.com/3215120 《深度學習與計算機視覺 演算法原理、框架應用》PDF,帶書籤,347頁。《大資料架構詳解:從資料獲取到深度學習》PDF,帶書籤,3

分享《深度學習與計算機視覺演算法原理框架應用》PDF《大資料架構資料獲取到深度學習》PDF +資料

下載:https://pan.baidu.com/s/12-s95JrHek82tLRk3UQO_w 更多分享資料:https://www.cnblogs.com/javapythonstudy/ 《深度學習與計算機視覺 演算法原理、框架應用》PDF,帶書籤,347頁。《大資料架構詳解:從資料獲取到深度學

Oracle資料字典

 Oracle通過資料字典來管理和展現資料庫資訊,資料字典通常儲存資料庫的元資料,是資料庫的“資料庫”。通常說的資料字典由4部分組成:內部RDBMS(X$)表、資料字典表、動態效能檢視(V$)和(靜態)資料字典檢視。(兩表兩檢視)   1,內部RDBMS(X$)表 &

達觀資料桂洪冠:一文達觀資料知識圖譜技術與應用

本文根據達觀資料桂洪冠在“達觀杯”文字智慧處理挑戰賽期間的技術直播分享整理而成,內容略有刪減。 ▌一、知識圖譜的概述 我們先直觀的來看一下什麼是知識圖譜,下面有一張圖,從這張圖裡可以看到,這個圖裡圓圈是節點,節點之間有一些帶箭頭的邊來連成,這個節點實際上相當於知識

YUV資料格式

在部落格園看到有大神寫了一篇關於YUV影象格式的部落格,圖文分析很不錯,這裡就轉載過來了。但排版有些亂,所以我就在原博文的基礎上做了一些排版,修改 了一些錯誤。希望我們能共同進步。come on!! 一.YUV資料格式的定義和採集方式 1)YUV資料格式定義     

[Hbase]HBase架構資料的讀寫流程

HBase架構圖理解 18.png HMaster連結Zookeeper的目得:HMaster需要知道哪些HRegionServere是活的及HRegionServer所在的位置,然後管理HRegionServer。 HBase內部是通過DFS client把資料寫

tcpdump使用資料包結果分析

-轉自https://blog.csdn.net/liang_baikai/article/details/79626180 選出其中我需要的: 使用詳解 (1)監視指定主機和埠的資料包 如果想要獲取主機210.27.48.1接收或發出的telnet包,使用如下命令 tcpdump tcp

【資料篇】Android混淆機制學習資料

您將獲得以下內容: 通過 Gradle 編譯 Debug 和 Release 包的方式和介紹; 如何對程式碼進行混淆; Proguard 的特性介紹; Proguard 和 Dexguard 的區別;

圖文YUV420資料格式

YUV格式有兩大類:planar和packed。 對於planar的YUV格式,先連續儲存所有畫素點的Y,緊接著儲存所有畫素點的U,隨後是所有畫素點的V。 對於packed的YUV格式,每個畫素點的Y,U,V是連續交*儲存的。 YUV,分為三個分量,“Y”表示明亮度

MySql主從配置檔案問題資料不同步解決方案)

一、問題描述 在mysql主從配置搭建好以後,偶爾會出現從庫無法同步主庫資料的情況,經過測試,把產生主從資料不同步的集中情況進行了歸納以及總結,問題如下: 1、主庫丟擲異常, 例如主鍵衝突等情況,這是主從配置就會失效,叢庫就無法同步主庫的資料了。如下

MNIST 資料

MNIST 資料集已經是一個被”嚼爛”了的資料集, 很多教程都會對它”下手”, 幾乎成為一個 “典範”. 不過有些人可能對它還不是很瞭解, 下面來介紹一下. Training set images: train-images-idx3-ubyte.gz

tensorflow 1.0 學習:十圖tensorflow資料讀取機制

本文轉自:https://zhuanlan.zhihu.com/p/27238630 在學習tensorflow的過程中,有很多小夥伴反映讀取資料這一塊很難理解。確實這一塊官方的教程比較簡略,網上也找不到什麼合適的學習材料。今天這篇文章就以圖片的形式,用最簡單的語言,為大家詳細解釋一下tensorflow的

iOS激情資料夾建立,移動,複製,刪除以及歸檔和反歸檔

<span style="font-size:18px;">主要程式碼精髓:</span> #import "RootViewController.h" #import “DXModel.h" #define kDocumentPath [NSS

串知識點資料結構,嚴蔚敏版)

1.堆分配儲存表示(也是一種順序表) typedef struct{ char *ch; int length; }HString; 2.串操作函式 //初始化一個串 void InitalStr(HString &T); //生成一個其值等於串常量chars