1. 程式人生 > >一個比較完整的Inno Setup 安裝指令碼

一個比較完整的Inno Setup 安裝指令碼

  1. [Setup]  
  2. ; 注: AppId的值為單獨標識該應用程式。  
  3. ; 不要為其他安裝程式使用相同的AppId值。  
  4. ; (生成新的GUID,點選 工具|在IDE中生成GUID。)  
  5. AppId={{A9861883-31C5-4324-BD9A-DC3271EEB675}  
  6. ;程式名  
  7. AppName=ISsample  
  8. ;版本號  
  9. AppVerName=ISsample 1.0.0.0  
  10. ;釋出者名  
  11. AppPublisher=Hkiss  
  12. ;相關連線  
  13. AppPublisherURL=http://zwkufo.blog.163.com  
  14. AppSupportURL=http://zwkufo.blog.163.com  
  15. AppUpdatesURL=http://zwkufo.blog.163.com  
  16. ;預設安裝目錄  
  17. DefaultDirName={pf}\ISsample  
  18. ;預設開始選單名  
  19. DefaultGroupName=ISsample  
  20. ;是否開啟->可選安裝開始選單項  
  21. ;AllowNoIcons=yes  
  22. ;安裝協議  
  23. ;LicenseFile=C:\Example\原始檔案\agreement.txt  
  24. ;安裝前檢視的文字檔案  
  25. ;InfoBeforeFile=C:\Example\原始檔案\Setup_New.txt  
  26. ;安裝後檢視文字檔案  
  27. ;InfoAfterFile=C:\Example\原始檔案\Setup_Old.txt  
  28. ;輸出資料夾  
  29. OutputDir=C:\Example\InnoSetup\out  
  30. ;輸出檔名  
  31. OutputBaseFilename=setup  
  32. ;安裝圖示  
  33. SetupIconFile=C:\Example\原始檔案\title.ico  
  34. ;安裝需要輸入密碼  
  35. ;Password=123  
  36. ;Encryption=yes  
  37. ;壓縮相關  
  38. Compression=lzma  
  39. SolidCompression=yes  
  40. ;可以讓使用者忽略選擇語言相關  
  41. ShowLanguageDialog = yes  
  42. ;備註版本資訊  
  43. VersionInfoCompany=HTTP://www.Hkiss.COM  
  44. VersionInfoDescription=ISsample 漢化增強版  
  45. VersionInfoVersion=1.0.0.0  
  46. VersionInfoCopyright=Copyright (C) 2007-2008 Hkiss  
  47. ;製作選擇語言  
  48. [Languages]  
  49. Name: "chs"; MessagesFile: "compiler:Default.isl" ;LicenSeFile :"C:\Example\原始檔案\chs\agreement.txt"  
  50. Name: "en"; MessagesFile: "compiler:Languages\English.isl";LicenSeFile :"C:\Example\原始檔案\en\agreement.txt"  
  51. ;使用者定製任務  
  52. [Tasks]  
  53. Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked  
  54. Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked  
  55. Name: "Tasks_1" ; Description:"使用者自定義任務1"; Flags: unchecked  
  56. Name: "Tasks_2" ; Description:"使用者自定義任務2"; Flags: unchecked  
  57. ;選擇了元件才會出現的定製任務  
  58. Name: "Tasks_3" ; Description:"使用者自定義任務3";Components: c1 ; Flags: unchecked  
  59. ;檔案安裝  
  60. [Files]  
  61. ;多語言安裝環境設定    公共引數Languages 來設定  
  62. Source: "C:\Example\原始檔案\enfile.txt"; DestDir: "{app}"; Languages: en ; Flags: ignoreversion  
  63. Source: "C:\Example\原始檔案\chsfile.txt"; DestDir: "{app}"; Languages: chs ; Flags: ignoreversion  
  64. ;使用者自定義任務 Tasks  
  65. Source: "C:\Example\原始檔案\Tasks\tasks_1.txt"; DestDir: "{app}\Tasks"; Flags: ignoreversion ;Tasks : Tasks_1  
  66. Source: "C:\Example\原始檔案\Tasks\tasks_2.txt"; DestDir: "{app}\Tasks"; Flags: ignoreversion ;Tasks :Tasks_2  
  67. Source: "C:\Example\原始檔案\Tasks\tasks_Components.txt"; DestDir: "{app}\Tasks"; Flags: ignoreversion ;Tasks :Tasks_2  
  68. ;使用者定義元件安裝  
  69. Source: "C:\Example\原始檔案\Components\Components_1.txt"; DestDir: "{app}\Components"; Flags: ignoreversion ; Components: a1;  
  70. Source: "C:\Example\原始檔案\Components\Components_2.txt"; DestDir: "{app}\Components"; Flags: ignoreversion ; Components: a2;  
  71. Source: "C:\Example\原始檔案\Components\Components_3.txt"; DestDir: "{app}\Components"; Flags: ignoreversion ; Components: a3;  
  72. Source: "C:\Example \原始檔案\Components\Components_4.txt"; DestDir: "{app} \Components"; Flags: ignoreversion ; Components: a1 a2 a3;  
  73. ;使用者註冊自定義Dll檔案      regserver 註冊 noregerror 不顯示錯誤資訊  
  74. Source: "C:\Example\原始檔案\jmail.dll"; DestDir: "{app}"; Flags: ignoreversion regserver  
  75. ;新增自述檔案  
  76. Source: "C:\Example\原始檔案\ISsample.txt"; DestDir: "{app}"; Flags: ignoreversion  
  77. ;新增一個檔案到快取資料夾{Tmp} deleteafterinstall 安裝後刪除  
  78. Source: "C:\Example\原始檔案\test.exe"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall  
  79. Source: "C:\Example\原始檔案\ISsample.chm"; DestDir: "{app}"; Flags: ignoreversion  
  80. Source: "C:\Example\原始檔案\ISsample.exe"; DestDir: "{app}"; Flags: ignoreversion  
  81. Source: "C:\Example\原始檔案\ISsample.dll"; DestDir: "{app}"; Flags: ignoreversion  
  82. Source: "C:\Example\原始檔案\ISsample.ini"; DestDir: "{app}"; Flags: ignoreversion  
  83. Source: "C:\Example\原始檔案\ISsample.rar"; DestDir: "{app}"; Flags: ignoreversion  
  84. Source: "C:\Example\原始檔案\ISsample_sys.dll"; DestDir: "{win}\System32"; Flags: ignoreversion  
  85. Source: "C:\Example\原始檔案\log\*"; DestDir: "{app}\log"; Flags: ignoreversion recursesubdirs createallsubdirs  
  86. ; 注意: 不要在任何共享系統檔案上使用“Flags: ignoreversion”  
  87. ;安裝型別設定  
  88. [Types]  
  89. Name: Full ;Description:"完全安裝"; Flags: iscustom  
  90. Name: Compact ;Description:"簡潔安裝";  
  91. Name: Custom; Description:"自定義安裝";  
  92. ;元件安裝  
  93. [Components]  
  94. Name: c1; Description: "自定義任務3" ; Types: Full  
  95. Name: a1; Description: "安裝Components_1"; Types: Full Compact Custom ;  
  96. Name: a2; Description: "安裝Components_2"; Types : Full   Compact  
  97. Name: a3; Description: "安裝Components_3"; Types : Full  
  98. ;開始選單,桌面快捷方式  
  99. [Icons]  
  100. Name: "{group}\ISsample"; Filename: "{app}\ISsample.exe"  
  101. Name: "{group}\{cm:ProgramOnTheWeb,ISsample}"; Filename: "http://zwkufo.blog.163.com"  
  102. Name: "{group}\{cm:UninstallProgram,ISsample}"; Filename: "{uninstallexe}"  
  103. Name: "{commondesktop}\ISsample"; Filename: "{app}\ISsample.exe"; Tasks: desktopicon  
  104. Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\ISsample"; Filename: "{app}\ISsample.exe"; Tasks: quicklaunchicon  
  105. ;新增一個幫助文擋  
  106. Name: {group}\ISsample 1.0.0.0 幫助文件;Filename: {app}\ISsample.chm  
  107. ;用來在程式安裝完成後 在安裝程式顯示最終對話方塊之前執行程式 常用與執行主程式 顯示自述檔案 刪除臨時檔案  
  108. [Run]  
  109. Filename: "{app}\ISsample.exe"; Description: "{cm:LaunchProgram,ISsample}"; Flags: nowait postinstall skipifsilent  
  110. Filename: "{app}\ISsample.txt"; Description: "檢視顯示自述檔案"; Flags: postinstall skipifsilent shellexec  
  111. ;更改顯示在程式中顯示的訊息文字  
  112. [Messages]  
  113. BeveledLabel=HKiss科技  
  114. ;解除安裝對話方塊說明  
  115. ConfirmUninstall=您真的想要從電腦中解除安裝ISsample嗎?%n%n按 [是] 則完全刪除 %1 以及它的所有元件;%n按 [否]則讓軟體繼續留在您的電腦上.  
  116. ;定義解壓說明  
  117. ;StatusExtractFiles=解壓並複製主程式檔案及相關庫檔案...  
  118. ;用於在使用者系統中建立,修改或刪除ini檔案健值  
  119. [INI]  
  120. Filename: "{app}\cfg.ini"; Section: "Startup Options"; Flags: uninsdeletesection  
  121. Filename: "{app}\cfg.ini"; Section: "Startup Options"; Key: "server ip"; String: "127.0.0.1"  
  122. Filename: "{app}\cfg.ini"; Section: "Startup Options"; Key: "server port"; String: "8080"  
  123. ;用於在使用者系統中建立,修改或刪除登錄檔健值  
  124. [Registry]  
  125. Root: HKLM ;SubKey:"Software\ISsample";ValueType:dword;ValueName:config;ValueData:10 ;Flags:uninsdeletevalue  
  126. ;在執行指令碼  
  127. [code]  
  128. //全域性變數  
  129. var MyProgChecked: Boolean;  
  130. //判斷程式是否存在  
  131. //初始華程式事件  
  132. function InitializeSetup(): boolean;  
  133. var Isbl: boolean;         //宣告變數  
  134. var Isstr: string;  
  135. begin       //開始  
  136. Isbl := true;             //變數賦值  
  137. Isstr := '歡迎';  
  138. if RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\ISsample', 'config') then  
  139. begin  
  140.     MsgBox('已安裝過,請先解除安裝在安裝',mbConfirmation, MB_OK);  
  141.     isbl := false;  
  142. end else  
  143. begin  
  144.    //MsgBox('無值',mbConfirmation, MB_OK);  
  145.      isbl := true;  
  146. end;  
  147. //下面是個麻煩的 條件語句 end else 注意  
  148. //if MsgBox(Isstr, mbConfirmation, MB_OKCANCEL) = IDOK then  
  149. //begin  
  150. // isbl := true;  
  151. // MsgBox('執行了', mbConfirmation, MB_OK);  
  152. //end else  
  153. //begin  
  154. // isbl := false;  
  155. //MsgBox('執行了', mbConfirmation, MB_OK);  
  156. //end;  
  157. Result := Isbl;  
  158. end;       //結束  
  159. procedure CurStepChanged(CurStep: TSetupStep);  
  160. var Isstr :string;  
  161. begin  
  162. if CurStep=ssInstall then       //實際安裝前呼叫  
  163. begin  
  164.     //MsgBox('CurStepChanged:實際安裝前呼叫', mbConfirmation, MB_OKCANCEL);           //安裝完成後呼叫  
  165. end;  
  166. if CurStep=ssPostInstall then  
  167. begin  
  168.     Isstr := ExpandConstant('{tmp}\tmp.rar');  
  169. //    if FileExists(Isstr) then  
  170. //    begin  
  171. //      MsgBox('檔案存在',mbConfirmation, MB_OK);  
  172. //    end else  
  173. //    begin  
  174. //      MsgBox('檔案不存在',mbConfirmation, MB_OK);  
  175. //    end;  
  176.    // MsgBox('CurStepChanged:實際安裝後呼叫', mbConfirmation, MB_OKCANCEL);  
  177. end;  
  178. end;  
  179. //下一步 按鈕按鈕 事件  
  180. function NextButtonClick(CurPageID: Integer): Boolean;  
  181. var ResultCode: Integer;  
  182. var IsSetup : Boolean;  
  183. begin  
  184. IsSetup := true ;  
  185. case CurPageID of  
  186.     wpSelectDir:  
  187.        MsgBox('NextButtonClick:' #13#13 'You selected: ''' + WizardDirValue + '''.', mbInformation, MB_OK);   //WizardDirValue 路徑  
  188.     wpSelectProgramGroup:  
  189.        MsgBox('NextButtonClick:' #13#13 'You selected: ''' + WizardGroupValue + '''.', mbInformation, MB_OK); //開始選單名  
  190.     wpReady:  
  191.       begin  
  192.        if not RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Test', 'config') then   begin  
  193.           if MsgBox('程式執行需要Test.ext,是否安裝!', mbConfirmation, MB_YESNO) = idYes then begin  
  194.            ExtractTemporaryFile('test.exe');  
  195.             if not Exec(ExpandConstant('{tmp}\test.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) then  
  196.               MsgBox('Test.exe出錯:' #13#13 ' ' + SysErrorMessage(ResultCode) + '.', mbError, MB_OK);  
  197.           end else begin  
  198.                 IsSetup := false ;  
  199.           end ;  
  200.           BringToFrontAndRestore();  
  201.         end;  
  202.       end;  
  203. end;  
  204. Result := IsSetup;  
  205. end;  

相關推薦

一個比較完整Inno Setup 安裝指令碼

[Setup]  ; 注: AppId的值為單獨標識該應用程式。  ; 不要為其他安裝程式使用相同的AppId值。  ; (生成新的GUID,點選 工具|在IDE中生成GUID。)  AppId={{A9861883-31C5-4324-BD9A-DC3271EEB675}  ;程式名  AppName=IS

專案inno setup安裝指令碼,帶檢測.net framework

幾乎完全不懂pascal指令碼,只是看過這種安裝指令碼,搞了三天才搞好,各種測試,各種改,終於做出了一個比較完整的安裝包。 要說,還是有很多改進的地方,比如沒有使用procedure,inno setup可以依照勾選項進行不同的安裝步驟,安裝完之後可以也可以進行相應的操作,

Inno Setup安裝程序單例運行

() 發現 避免 創建 pre 已運行 procedure str tex 1、緣起: KV項目下載底層升級包,老是報出升級文件占用問題,反復分析,不得其所。 今天突然發現同時啟動多個升級程序實例,分析認為安裝包同時被調用多次,導致實例訪問文件沖突,導致此問題。 安裝程序由

inno setup 安裝前判斷進程是否存在,以及停止相應進程<轉>

mat copy ger eve runt don rec run TP 打包的時候遇到了這樣的需求:假似用戶都是傻瓜 式操作,如果更新安裝程序的時候,之前的老程序還在運行這個時候如果你去提示讓用戶吧老程序手動退掉也不現實。 所以當遇到這

virtualenv簡介以及一個比較折騰的scrapy安裝方法

direct let figure 軟件包 免費 fig 構建 作者 ack 本文來自網易雲社區作者:沈高峰virtualenv + pip 安裝python軟件包是一種非常好的選擇,在大部分情況下安裝python軟件包是不需要求助於sa的。使用自己的一個工作副本也是寫py

inno setup 安裝介面進度條控制

用inno setup製作安裝包會發現一個問題。 預設安裝時候的進度條只是檔案提取的進度。 當檔案提取完成了進度條就已經100% 這時候如果你[Run] 裡面執行的東西比較多,就會顯得安裝進度 100%之後一直卡在那裡,卡了半天才

一個比較完整的登陸和註冊後臺

資料庫類 conn.php <?php class opmysql{ private $host = 'localhost'; //伺服器地址 private $name = 'root'; //登

IntelliJ IDEA 搭建一個比較完整的網站例項 4

在前面的文章中,我們先搭建了一個struts2的專案,然後添加了maven和spring框架。那麼接下來需要做的事就很明顯了,那就是新增hibernate框架,組成一個完整的SSH專案。 開啟工程,我們可以看到如下提示: 點選File——Project Structure ,如圖:

IntelliJ IDEA 搭建一個比較完整的網站例項 5

接上一篇,在hibernate新增成功之後,我們找到hibernate.cfg.xml檔案,可以看到,系統自己建立的檔案有一段是標紅的,這是因為我們還沒有匯入mysql的jar包。我們可以直接從網上找一個mysql的jar包,新增到專案中。 如圖,這是我從網上下載下來的jar包,將其複製貼上

Inno Setup 安裝前解除安裝原程式

很多時候我們需要在安裝檔案之前解除安裝原有的程式而不是覆蓋安裝,本文的code就是實現了這樣的功能。實現原理是:從註冊表'UninstallString'項中讀取解除安裝資訊,用Exec進行靜默解除安裝。下面code中APP_NAME為你的程式名,可以去註冊表中確認。function InitializeSe

Android AIDL -通過一個比較完整的Demo快速運用

前端時間專案運用到AIDL,關於AIDL客戶端以及AIDL服務端網路上沒有一個比較完備的Demo. 而參考Demo無疑是一個比較快速的學習方法.因此,我寫了一個Demo. 供大家參考,也非常歡迎大家對其中寫的不好的地方進行指正. 好了,首先簡述下基本功能: 在AIDL 客

Inno Setup安裝時判斷並關閉已經執行的應用exe

   就很簡單的一個功能,Inno setup製作的安裝包,在安裝時候,判斷是否之前有本程式的實力在執行,執行的話終止他,貌似很簡單,折騰了我1小時。   網上找的好多方案,不理想不理想!我就給大家列舉下這些我認為不理想的原因!   網上方案1: 在Code段用Find

Inno Setup Pascal指令碼程式碼集錦

[code]procedure CurPageChanged(CurPageID: Integer);begincase CurPageId ofwpWelcome : MsgBox('wpWelcome ', mbInformation, MB_OK);wpLicense

inno setup 安裝 .net 服務

inno setup 指令碼 #define MyAppName "getService" #define MyAppVersion "1.0" #define MyAppPublisher "AZ Studio" #define MyAppURL "http://sou

[js外掛開發教程]實現一個比較完整的開源級選項卡外掛

  在這篇文章中,我實現了一個基本的選項卡功能:請猛擊後面的連結>> [js外掛開發教程]原生js仿jquery架構擴充套件開發選項卡外掛.   還缺少兩個常用的切換(自動切換與透明度漸變),當然有朋友會說,還有左右,上下等等,這些動畫會放在焦點圖(幻燈片)外掛

Inno Setup安裝、解除安裝時判斷是否程式正在執行

var ErrorCode: Integer; IsRunning: Integer; // 安裝時判斷客戶端是否正在執行 function InitializeSetup(): Boolean; begin Result :=true; //安裝程式

一個比較完整的WindowsFormsApplication實現

這是前兩天課堂上的例子,提供了一個自定義WindowsFormsApplication的範例,主要包括如下的功能 1. 單一例項 2. 閃屏 3. 登陸視窗 4. 工作列圖示和選單 需要注意的是,WindowsFormsApplicationBase這個類是要新增Micros

20180806一個linux下集成了安裝指令碼的工具Fantastico

Fantastico或稱為 "Fantastico De Luxe"是被各家網路主機供應商所常使用的自動化指令碼安裝工具軟體。只需在Fantastico的幾次點選,就能輕鬆建立網站。Fantastico被認為是在cPanel中的一個“一鍵式”的自動安裝程式,同時還提供了一個可

Inno Setup 安裝前卸載原程序

而不是 ide 人工智 exec 教程 pre string move art 分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net 很多時候我們需要在

[Inno Setup] 安裝完成後調用函數

test dir pan color perf 完成後 通配 安裝 install 如果使用了通配符,每拷貝一個文件,函數都會被調用一次。 Source: "path\test.exe"; DestDir: {app}; AfterInstall: LoadPerfC