1. 程式人生 > >Inno Setup 打包工具總結

Inno Setup 打包工具總結

最近打包用到了Inno setup,在這個過程中容易犯一些低階錯誤,特別寫出來已提醒自己

1.打包資料夾

打包檔案按照嚮導來一般沒什麼問題,但資料夾就不一樣了。嚮導生成的打包資料夾的程式碼如下:

Source: "D:MyProject/XX/*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs


它解壓時直接把XX目錄下的所以檔案拷貝到安裝目錄下,而沒有生成XX目錄,程式如果要引用XX目錄下的檔案就會出現錯誤。

我改成這樣就不會有事了(也許嚮導可以生成,我還不清楚)

Source: "D:MyProject/XX/*"; DestDir: "{app}/XX"; Flags: ignoreversion recursesubdirs createallsubdirs


2.桌面圖示

嚮導預設生成的程式碼不會給你的應用程式加上圖示,同時也不會在開始程式選單里加上解除安裝程式的快捷方式

Name: "{group}/XX"; Filename: "{app}/XX.exe" 
Name: "{group}/{cm:UninstallProgram,XX}"; Filename: "{uninstallexe}" 
Name: "{commondesktop}/XX"; Filename: "{app}/XX.exe";IconFileName:"{app}/res/XX.ico"; Tasks: desktopicon

在Icons下新增這些程式碼就可以做到。

3.安裝程式時要註冊某些ocx控制元件或DLL

我自己的做法是些一個bat指令碼來註冊ocx或者dll,放在自動Run下,在程式執行之前執行它。當然Inno setup裡面也有這樣的指令碼程式碼

4.如果程式執行需要一些元件支援,比如.NetFrameWork,在解壓時就要檢測系統是否安裝了.NetFrameWork

[code] 
function CheckDotNet4_0():boolean; 
begin 
Result:=not RegKeyExists(HKLM, 'SOFTWARE/Microsoft/.NETFramework/policy/v4.0'); 
end; 

function InitializeSetup(): Boolean; 
var Path:string; 
ResultCode: Integer; 
begin 
if CheckDotNet4_0() then 
begin 
ExtractTemporaryFile('dotNetFx40_Full_x86_x64.exe'); 
Exec(ExpandConstant('{tmp}/dotNetFx40_Full_x86_x64.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); 
end 
end;