1. 程式人生 > >使用Innosetup製作安裝包的一些技巧

使用Innosetup製作安裝包的一些技巧

. 選擇安裝介面上的圖片
  1. [Setup]  
  2. ;設定介面上的兩個圖片  
  3. WizardImageFile=WizModernImage.bmp  
  4. WizardSmallImageFile=WizSmallImage.bmp  

2. 設定安裝介面上的文字

  1. [Messages]  
  2. ;設定開始介面  
  3. WelcomeLabel1=%n歡迎安裝 MyProgram開發系統   
  4. WelcomeLabel2=%n集MyProgram於一體的開發平臺%n%n-單機版:用於開發MyProgram功能平臺%n%n-網路版:用於開發MyProgram功能平臺%n%n%n%n%n  
  5. ;設定許可證協議介面  
  6. WizardLicense=許可證協議  
  7. LicenseLabel=在安裝“MyProgram開發系統”之前,請閱讀%n授權協議  
  8. ;設定安裝路徑選擇介面  
  9. WizardSelectDir=選擇安裝位置  
  10. SelectDirDesc=選擇“MyProgram開發系統”的安裝資料夾  
  11. SelectDirLabel3=-安裝程式將安裝 MyProgram開發系統 到下列資料夾%n%n-要安裝到其他資料夾,單機[瀏覽(b)...]按鈕並選擇其他資料夾%n%n-點選[< 返回(B)]按鈕返回上一個介面%n%n-選擇[繼續(N) >]按鈕繼續安裝 MyProgram開發系統%n%n-選擇[取消]按鈕退出 MyProgram開發系統 安裝  
  12. SelectDirBrowseLabel=  
  13. DiskSpaceMBLabel=  
  14. ;設定元件安裝介面  
  15. WizardSelectComponents=選擇元件  
  16. SelectComponentsDesc=選擇您想要安裝的 MyProgram開發系統 的元件  
  17. SelectComponentsLabel2=請選擇您要安裝的元件,清除您不想安裝的元件。%n點選[繼續(N) >]按鈕繼續。  
  18. ;設定準備安裝介面  
  19. WizardReady=準備安裝  
  20. ReadyLabel1=安裝程式將安裝 MyProgram開發系統  

3. 設定安裝介面上的元件

  1. [Types]  
  2. ;設定元件的兩種狀態,完全安裝與使用者自定義安裝  
  3. Name: "custom"; Description: "使用者自定義安裝"; Flags: iscustom  
  4. Name: "full"; Description: "完全安裝"  
  5. [Components]  
  6. ;預設為選擇狀態  
  7. Name: "demo1"; Description: "demo1"; Types: full custom; Flags: fixed;  
  8. ;預設為不選擇狀態,完全安裝時為選擇狀態  
  9. Name: "demo2"; Description: "demo2"; Types: full;  
  10. ;預設為不選擇狀態  
  11. Name: "demo3"; Description: "demo3"; Types: full;  

4. 設定安裝介面右上角圖片大小及位置

  1. Var  
  2. PageName, PageDescription: TLabel;  


{設定安裝介面右上角圖片大小及位置}

  1. procedure InitializeWizard();  
  2. begin  
  3. {WizardForm.WizardSmallBitmapImage.width := 100;  
  4. WizardForm.WizardSmallBitmapImage.left := WizardForm.width - 100;  
  5. WizardForm.WizardSmallBitmapImage.height := 50;  
  6. WizardForm.PAGENAMELABEL.width:=100;  
  7. WizardForm.PAGEDESCRIPTIONLABEL.width:=200;}  
  8. PageName := TLabel.Create(WizardForm.MainPanel);  
  9. PageName.Parent := WizardForm.MainPanel;  
  10. PageName.Top := WizardForm.PageNameLabel.Top;  
  11. PageName.Left := WizardForm.PageNameLabel.Left;  
  12. PageName.Width := WizardForm.PageNameLabel.Width;  
  13. PageName.Height := WizardForm.PageNameLabel.Height;  
  14. PageName.Font := WizardForm.PageNameLabel.Font;  
  15. PageName.Transparent := true;  
  16. PageName.Font.Color:=clblack;  
  17. PageDescription := TLabel.Create(WizardForm.MainPanel);  
  18. PageDescription.Parent := WizardForm.MainPanel;  
  19. PageDescription.Top := WizardForm.PageDescriptionLabel.Top;  
  20. PageDescription.Left := WizardForm.PageDescriptionLabel.Left;  
  21. PageDescription.Width := WizardForm.PageDescriptionLabel.Width;  
  22. PageDescription.Height := WizardForm.PageDescriptionLabel.Height;  
  23. PageDescription.Font := WizardForm.PageDescriptionLabel.Font;  
  24. PageDescription.Transparent := true;  
  25. PageDescription.Font.Color:=clblack;  
  26. WizardForm.WizardSmallBitmapImage.Top := ScaleY(0);  
  27. WizardForm.WizardSmallBitmapImage.Left := ScaleX(0);  
  28. WizardForm.WizardSmallBitmapImage.Width := WizardForm.MainPanel.Width;  
  29. WizardForm.WizardSmallBitmapImage.Height := WizardForm.MainPanel.Height;  
  30. WizardForm.PageNameLabel.Visible := false;  
  31. WizardForm.PageDescriptionLabel.Visible := false;  
  32. end;  
  33. procedure CurPageChanged(CurPageID: Integer);  
  34. begin  
  35. PageName.Caption := WizardForm.PageNameLabel.Caption;  
  36. PageDescription.Caption := WizardForm.PageDescriptionLabel.Caption;  
  37. PageDescription.width:=300;  
  38. end;  

5. 定義[Message]段顏色

  1. procedure InitializeWizard();  
  2. begin  
  3. WizardForm.BeveledLabel.Enabled:= True;  
  4. WizardForm.BeveledLabel.Font.Color:= clblue;  
  5. end;  

6. 安裝、解除安裝時判斷是否程式正在執行,解除安裝完成時自動開啟網頁

  1. var  
  2. ErrorCode: Integer;  
  3. IsRunning: Integer;  
  4. // 安裝時判斷客戶端是否正在執行    
  5. function InitializeSetup(): Boolean;    
  6. begin    
  7. Result :=true; //安裝程式繼續    
  8. IsRunning:=FindWindowByWindowName('東方寬頻網路電視');    
  9. while IsRunning0 do    
  10. begin    
  11.     if Msgbox('安裝程式檢測到客戶端正在執行。' #13#13 '您必須先關閉它然後單擊“是”繼續安裝,或按“否”退出!', mbConfirmation, MB_YESNO) = idNOthen    
  12.     begin    
  13.       Result :=false; //安裝程式退出    
  14.       IsRunning :=0;    
  15.     end else begin    
  16.       Result :=true; //安裝程式繼續    
  17.       IsRunning:=FindWindowByWindowName('東方寬頻網路電視');    
  18.     end;    
  19. end;    
  20. end;    
  21. // 解除安裝時判斷客戶端是否正在執行    
  22. function InitializeUninstall(): Boolean;    
  23. begin    
  24.    Result :=true; //安裝程式繼續    
  25. IsRunning:=FindWindowByWindowName('東方寬頻網路電視');    
  26. while IsRunning0 do    
  27. begin    
  28.     if Msgbox('安裝程式檢測到客戶端正在執行。' #13#13 '您必須先關閉它然後單擊“是”繼續安裝,或按“否”退出!', mbConfirmation, MB_YESNO) = idNOthen    
  29.     begin    
  30.       Result :=false; //安裝程式退出    
  31.       IsRunning :=0;    
  32.     end else begin    
  33.       Result :=true; //安裝程式繼續    
  34.       IsRunning:=FindWindowByWindowName('東方寬頻網路電視');      
  35.     end;    
  36. end;    
  37. end;    
  38. procedure CurUninstallStepChanged(CurUninstallStep:TUninstallStep);    
  39. begin    
  40. case CurUninstallStep of    
  41.     usUninstall:      
  42.       begin // 開始解除安裝    
  43.       end;    
  44.     usPostUninstall:    
  45.       begin      //解除安裝完成    
  46.         // MsgBox('CurUninstallStepChanged:'#13#13 'Uninstall just finished.', mbInformation, MB_OK);    
  47.         // ...insert code to performpost-uninstall tasks here...    
  48.         ShellExec('open','http://www.dreams8.com', '', '', SW_SHOWNORMAL, ewNoWait,ErrorCode);    
  49.       end;    
  50. end;    
  51. end;   

7. 去掉安裝程式左上角“關於安裝程式”的程式碼

  1. procedureInitializeWizard();  
  2. begin  
  3. WizardForm.BorderIcons:= [biMinimize];  
  4. end;  
  5. procedure CurPageChanged(CurPage: Integer);  
  6. begin  
  7. if CurPage=wpWelcome then  
  8. WizardForm.BorderIcons:= [biSystemMenu, biMinimize];  
  9. end;  
  10. 或者  
  11. procedure InitializeWizard();  
  12. begin  
  13. WizardForm.BORDERICONS := [biHelp, biSystemMenu, biMinimize];  
  14. end;   

8. 新增“關於”和網站連結按鈕

  1. procedure URLLabelOnClick(Sender: TObject);  
  2. var  
  3. ErrorCode: Integer;  
  4. begin  
  5. ShellExec('open', 'http://www.vistaqq.com', '', '', SW_SHOWNORMAL, ewNoWait,ErrorCode);  
  6. end;  
  7. procedure AboutButtonOnClick(Sender: TObject);  
  8. begin  
  9. MsgBox(#13 'Vista 狀態條風格碟符' #13 #13'本軟體由jinn製作,希望各位登陸中天VIP工作室!' #13#13 '版權所有 (C) 中天VIP工作室', mbInformation, MB_OK);  
  10. end;  
  11. var  
  12.     AboutButton, CancelButton: TButton;  
  13.     URLLabel: TNewStaticText;  
  14. procedure InitializeWizard();  
  15. begin  
  16. { Create the pages }  
  17. WizardForm.PAGENAMELABEL.Font.Color:= clred;  
  18. WizardForm.PAGEDESCRIPTIONLABEL.Font.Color:= clBlue;  
  19. WizardForm.WELCOMELABEL1.Font.Color:= clGreen;  
  20. WizardForm.WELCOMELABEL2.Font.Color:= clblack;  
  21.    CancelButton := WizardForm.CancelButton;  
  22.      AboutButton := TButton.Create(WizardForm);  
  23.      AboutButton.Left := WizardForm.ClientWidth -CancelButton.Left - CancelButton.Width;  
  24.      AboutButton.Top := CancelButton.Top;  
  25.      AboutButton.Width := CancelButton.Width;  
  26.      AboutButton.Height := CancelButton.Height;  
  27.      AboutButton.Caption := '&About';  
  28.      AboutButton.OnClick := @AboutButtonOnClick;  
  29.      AboutButton.Parent := WizardForm;  
  30. URLLabel := TNewStaticText.Create(WizardForm);  
  31.     URLLabel.Caption := '中天VIP工作室';  
  32.     URLLabel.Cursor := crHand;  
  33.     URLLabel.OnClick := @URLLabelOnClick;  
  34.     URLLabel.Parent := WizardForm;  
  35.     { Alter Font *after* setting Parent so the correctdefaults are inherited first }  
  36.     URLLabel.Font.Style := URLLabel.Font.Style +[fsUnderline];  
  37.     URLLabel.Font.Color := clBlue;  
  38.     URLLabel.Top := AboutButton.Top + AboutButton.Height -URLLabel.Height - 2;  
  39.     URLLabel.Left := AboutButton.Left + AboutButton.Width +ScaleX(20);  
  40. end;  

9. 安裝時播放音樂

在指令碼編譯裡的[Code]與[Files]段處新增以下程式碼:

  1. Function mciSendString(lpszCommand: String; lpszReturnString: Integer;cchReturnLength: Integer; hwndCallback: Integer): Integer;  
  2. external '[email protected] stdcall';  
  3. procedure InitializeWizard();  
  4. var  
  5.    BGMusicFile, SplashFile: string;  
  6. SplashForm: TForm;  
  7. SplashFileName: String;  
  8. I: Integer;   
  9. begin  
  10. ExtractTemporaryFile(ExtractFileName(ExpandConstant('{tmp}\music.mp3')));  
  11. SplashForm := TForm.create(nil);  
  12. with SplashForm do  
  13.    begin  
  14. mciSendString(ExpandConstant('play {tmp}\music.mp3'),0,0,0);  
  15. Close;  
  16. Free;  
  17.    end;  
  18. end;  
  19. [Files]  
  20. Source: "C:\music.mp3"; Flags: dontcopy  

或者

  1. Source: "C:\mymusic.mp3";DestDir: "{tmp}"; Flags: dontcopy  

程式碼說明:[Code]中藍色程式碼{tmp}與\music.mp3的意思是播放inno setup安裝時建立的臨時資料夾內的music.mp3音樂檔案!

[Files]中C:\music.mp3是你音樂原始檔的地址,填自己的音訊名稱與音訊格式。Flags: dontcopy 的意思是在安裝時將音樂檔案放到Inno Setup所建立的臨時資料夾內,並且在完成安裝後刪除此音樂檔案

10. 關於Inno Setup安裝歡迎介面文字與安裝嚮導文字顏色修改

  1. procedure InitializeWizard();  
  2. begin  
  3. //改變歡迎頁面文字的顏色 (如圖)  
  4. WizardForm.WelcomeLabel1.Font.Color:= clNavy;  
  5. WizardForm.WelcomeLabel2.Font.Color:= clTeal;  
  6. end; 

相關推薦

使用Innosetup製作安裝一些技巧

. 選擇安裝介面上的圖片 [Setup]  ;設定介面上的兩個圖片  WizardImageFile=WizModernImage.bmp  WizardSmallImageFile=WizSmallImage.bmp   2. 設定安裝介面上的文字 [Messag

Qt應用程式製作安裝過程

準備工作: 一、新增環境變數 二、根據執行檔案,找到相對的Qt必備外掛環境 三、製作安裝包 一,新增Qt的開發環境變數       二、根據執行檔案,找到相對的Qt必備外掛環境  1)首先要釋出,在編譯器編譯一定要選擇”release“而不是”de

vs2010製作安裝檔案出現未能在指定路徑下找到系統必備(Bootstrapper)的問題

1.本人在vs2010開發環境中製作安裝包檔案時,編譯時出現 " 警告: 未能在路徑“C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\”找到系統必備“Microsoft .NET Framework 4 CHS Langu

分享一個使用NSIS製作安裝的UI外掛

做軟體開發以來,接觸的安裝包製作方式也有幾種了,從最原始的MSI安裝包方式,到InnoSetup,再到NSIS;但一直都是使用其指令碼功能,並沒有在介面上做一些美化操作。 很早之前就想做一個介面可以自由定製的安裝包工具,一直沒有時間,就放下了。 最近有業務要求需要做

使用Mono Runtime Bundle製作安裝讓C#桌面應用程式脫離net framework

之前有一個C#版本和ios版本(支援下載學生名單,點名等更多功能,該版本未上app store)的教輔助手幫助學校老師提交成績到教務系統(浙大正方web版),一直打算用mfc寫一個vc++版本的可以方便的在未安裝net framework的電腦上使用,前幾天看到一篇文章再談為什麼要使用MONO  ,既然Uni

NSIS製作安裝(一)

NSIS簡介: NISIS是win32免費的安裝,解除安裝系統。他的特點是指令碼簡潔高效;系統開銷小。當然進行安裝、解除安裝、系統設定、解壓檔案都沒有問題,幾乎可以做所有的事情。更多的功能請閱讀《NSIS幫助文件》 工具: NIS Edit + NSIS 思路: 基本上製作

NSIS製作安裝,如何檢測並解除安裝已有版本

將如下程式碼追加到NSIS指令碼的尾部即可。 Var UNINSTALL_PROG Var OLD_VER Var OLD_PATH Function .onInit   ClearErrors

vs2010中C++呼叫python指令碼並製作安裝

一、 準備工作 1. 安裝visual studio 210。 2. 安裝python編譯環境,筆者版本為2.7.2。 3. 安裝py2exe,用於給編寫好的python打包。 二、編寫python指令碼程式 以下程式為筆者為學校的bbs寫的登陸指令碼LilyLogin.

Inno setup製作安裝時向登錄檔中寫安裝後的路徑

[Registry] Root:HKLM;Subkey:"Software\scas111";Flags:uninsdeletekeyifempty Root:HKLM;Subkey:"Softwa

在用installshield製作安裝時如何在登錄檔中寫檔案關聯

     最近在學習用installshield製作安裝包,這兩天遇到需要寫登錄檔的問題:通過登錄檔設定檔案關聯,即將一個帶有特殊字尾的檔案連線到一個應用程式上。怎麼在installshield中進行設定呢? 首先我們先來學習一下注冊表,以下內容為轉載 認識登錄檔 一、六大

QT程式在Windows下製作安裝釋出程式的方法

設計完成時,用release方式編譯程式,把生成的EXE檔案和其依賴的庫放在一個資料夾中,用setup2go生成安裝檔案。 好,我們啟動程式,選擇檔案>>>>>>>新建工程。 儲存工程專案 出現了安裝配置欄目,我們

inno setup製作安裝的經驗

   利用inno setup製作安裝包,inno setup下面編寫的指令碼語言用的pascal語言,不過編寫安裝包也只是需要用到簡單的pascal語言語法,然後瞭解一下一些inno setup安裝過程預設執行的函式,其實這些函式右鍵的安裝事件裡面都是有的,大家將需要用到

怎麼減少iOS應用程式安裝大小技巧

怎樣才能讓iPone裝置程式安裝包小一點,讓程式的下載和安裝更快速?升級程式時候,安裝包所佔用空間過大怎麼辦?如果你存在著這樣的苦惱,那麼本文所收集的一些減小程式安裝包大小的相關技巧以及減小iOS應用程序升級時所需下載的大小(這與第一次安裝使用的工作原理有所不同)應該能幫

使用組策略分發軟體(製作安裝

二、定製自己的MSI檔案前面我們介紹了很多MSI檔案的內容,其實MSI並不神祕、複雜,我們自己都能製作,並且製作MSI檔案的工具已經在Windows的安裝盤上了。首先,找到Windows2000的安裝光碟,雙擊下邊的這個位置的檔案:valueadd/3rdparty/Mgmt/Winstleadmle.msi

利用InstallShield12製作安裝之四:隱藏準備安裝介面

    使用InstallShield12製作安裝包、升級包的這段時間以來,一直希望能夠在安裝介面上做點工作,使得安裝介面能夠更加符合產品應用的實際需求,不過因為資料少及經驗不足等原因,一直未能如願。這兩天,在打包過程中,終於發現了一點符合應用的小技巧,特別拿出來分享。  

innosetup製作靜默安裝安裝後重啟

; 指令碼由 Inno Setup 指令碼嚮導 生成! ; 有關建立 Inno Setup 指令碼檔案的詳細資料請查閱幫助文件! [Setup] ; 注: AppId的值為單獨標識該應用程式。 ; 不

Installshield製作更新安裝

對於InstallScript MSI Project安裝包,只需要做兩步,即可做更新安裝包。 1.修改版本號,注意需要修改第一個數字或者第二個數字。 2.設定Enable Maintenance的值為Yes. 解決問題的時候看到的一個坑,暫時沒碰到。(只覆蓋少數檔案)

visual studio 2017 installer 安裝製作過程出現的問題---無法註冊模組 HRESULT -2147024769 請與您的技術支援人員聯絡

visual studio 2017 installer 安裝包製作過程出現的問題---無法註冊模組 HRESULT -2147024769 請與您的技術支援人員聯絡 使用visual studio 2017 installer製作打包程式時如果用到了外部控制元件需要按以下方式操作:

visual studio 2017 installer 安裝製作過程出現的問題---此安裝程式需要.NET Framework 版本 3.5,請安裝該版本,然後重新執行此安裝程式,可以從Web獲得

visual studio 2017 installer 安裝包製作過程出現的問題---此安裝程式需要.NET Framework 版本 3.5,請安裝該版本,然後重新執行此安裝程式,可以從Web獲得.NET Framework 。要立即做此事嗎?     &nbs

【附有安裝連線】mysql 8.0的一些坑包括採用PHP 7.0 連線時報錯Unexpected server respose while doing caching_sha2 auth: 109

連結:https://pan.baidu.com/s/1cMzgEKXb9Cpkjbz9APOhiw 提取碼:ld0x 【mysql 8.0】 注: 此版本使用caching_sha2_password的身份驗證機制。在以往的版本中採用的是mysql_native_passwo