Inno Setup 打包工具總結(轉)

weixin_34391854發表於2013-08-02

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

1.打包資料夾

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

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


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

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

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


2.桌面圖示

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

  1. Name: "{group}/XX"; Filename: "{app}/XX.exe"   
  2. Name: "{group}/{cm:UninstallProgram,XX}"; Filename: "{uninstallexe}"   
  3. 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

    1. [code]   
    2. function CheckDotNet4_0():boolean;   
    3. begin   
    4. Result:=not RegKeyExists(HKLM, 'SOFTWARE/Microsoft/.NETFramework/policy/v4.0');   
    5. end;   
    6.   
    7. function InitializeSetup(): Boolean;   
    8. var Path:string;   
    9. ResultCode: Integer;   
    10. begin   
    11. if CheckDotNet4_0() then   
    12. begin   
    13. ExtractTemporaryFile('dotNetFx40_Full_x86_x64.exe');   
    14. Exec(ExpandConstant('{tmp}/dotNetFx40_Full_x86_x64.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);   
    15. end   
    16. end;   

相關文章