成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

了解一下C/S軟件打包部署神器InnoSetup

系統 Windows
我們都知道做客戶端軟件,一般交付給客戶的都是exe的安裝包。那么我們平常開發完成之后,如何把程序進行打包呢。找了下發現Inno Setup是個不錯的選擇。

[[385773]]

本文轉載自微信公眾號「UP技術控」,作者conan5566。轉載本文請聯系UP技術控公眾號。  

概述

我們都知道做客戶端軟件,一般交付給客戶的都是exe的安裝包。那么我們平常開發完成之后,如何把程序進行打包呢。找了下發現Inno Setup是個不錯的選擇。

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

能做什么

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

2.廣泛支持在 64 位 的 Windows XP and Windows Server2003 版本的操作系統中的 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 子目錄中的一個腳本文件。(你也可以將這些示例腳本作為你自己編寫腳本的模板。)

以下是我之前的項目的腳本

  1. ; Script generated by the Inno Setup Script Wizard. 
  2. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! 
  3.  
  4. #define MyAppName "主機助手" 
  5. #define MyAppVersion "1.1.1.7" 
  6. #define MyAppPublisher "點擊網絡, 技術部." 
  7. #define MyAppURL "http://yroot.bidns.net/" 
  8. #define MyAppExeName "主機助手.exe" 
  9.  
  10. [Setup] 
  11. ; NOTE: The value of AppId uniquely identifies this application. 
  12. ; Do not use the same AppId value in installers for other applications. 
  13. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) 
  14. AppId={{CD9818E0-FEE2-418E-9775-15F50AE2229E} 
  15. AppName={#MyAppName} 
  16. AppVersion={#MyAppVersion} 
  17. ;AppVerName={#MyAppName} {#MyAppVersion} 
  18. AppPublisher={#MyAppPublisher} 
  19. AppPublisherURL={#MyAppURL} 
  20. AppSupportURL={#MyAppURL} 
  21. AppUpdatesURL={#MyAppURL} 
  22. DefaultDirName={pf}\ZhugAssistant 
  23. DisableProgramGroupPage=yes 
  24. OutputDir=C:\Users\admin\Desktop 
  25. OutputBaseFilename=主機助手安裝包 
  26. SetupIconFile=C:\Users\admin\Documents\Visual Studio 2010\Projects\yroot-10-24\yroot\bin\Debug\images\title.ico 
  27. Compression=lzma 
  28. SolidCompression=yes 
  29.  
  30. [Languages] 
  31. Name"english"; MessagesFile: "compiler:Default.isl" 
  32.  
  33. [Tasks] 
  34. Name"desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: exclusive 
  35. Name"quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked   
  36.  
  37. [Files] 
  38. Source: "D:\Debug\主機助手.exe"; DestDir: "{app}"; Flags: ignoreversion 
  39. Source: "D:\Debug\AccessSetup.exe"; DestDir: "{app}"; Flags: ignoreversion 
  40. Source: "D:\Debug\conf\*"; DestDir: "{app}\conf\"; Flags: ignoreversion recursesubdirs createallsubdirs 
  41. Source: "D:\Debug\data\*"; DestDir: "{app}\data\"; Flags: ignoreversion recursesubdirs createallsubdirs 
  42. Source: "D:\Debug\images\*"; DestDir: "{app}\images\"; Flags: ignoreversion recursesubdirs createallsubdirs 
  43. Source: "D:\Debug\tools\*"; DestDir: "{app}\tools\"; Flags: ignoreversion recursesubdirs createallsubdirs 
  44. Source: "D:\Debug\CSkin.dll"; DestDir: "{app}"; Flags: ignoreversion 
  45. Source: "D:\Debug\DiskQuotaTypeLibrary.dll"; DestDir: "{app}"; Flags: ignoreversion 
  46. Source: "D:\Debug\DMSkin.dll"; DestDir: "{app}"; Flags: ignoreversion 
  47. Source: "D:\Debug\form_data_path.txt"; DestDir: "{app}"; Flags: ignoreversion 
  48. Source: "D:\Debug\Interop.ADODB.dll"; DestDir: "{app}"; Flags: ignoreversion 
  49. Source: "D:\Debug\Interop.ADOX.dll"; DestDir: "{app}"; Flags: ignoreversion 
  50. Source: "D:\Debug\Interop.FsrmLib.dll"; DestDir: "{app}"; Flags: ignoreversion 
  51. Source: "D:\Debug\Interop.IISOle.dll"; DestDir: "{app}"; Flags: ignoreversion 
  52. Source: "D:\Debug\Interop.TaskScheduler.dll"; DestDir: "{app}"; Flags: ignoreversion 
  53. Source: "D:\Debug\MetroFramework.Design.dll"; DestDir: "{app}"; Flags: ignoreversion 
  54. Source: "D:\Debug\MetroFramework.dll"; DestDir: "{app}"; Flags: ignoreversion 
  55. Source: "D:\Debug\MetroFramework.Fonts.dll"; DestDir: "{app}"; Flags: ignoreversion 
  56. Source: "D:\Debug\Microsoft.Web.Administration.dll"; DestDir: "{app}"; Flags: ignoreversion 
  57. Source: "D:\Debug\Microsoft.Win32.TaskScheduler.dll"; DestDir: "{app}"; Flags: ignoreversion 
  58. Source: "D:\Debug\MySql.Data.dll"; DestDir: "{app}"; Flags: ignoreversion 
  59. Source: "D:\Debug\SimpleUpdater.dll"; DestDir: "{app}"; Flags: ignoreversion 
  60. Source: "D:\Debug\yroot.vshost.exe"; DestDir: "{app}"; Flags: ignoreversion 
  61. Source: "D:\Debug\yroot.vshost.exe.config"; DestDir: "{app}"; Flags: ignoreversion 
  62. Source: "D:\Debug\yroot.vshost.exe.manifest"; DestDir: "{app}"; Flags: ignoreversion 
  63. Source: "D:\Debug\yroot_beta.vshost.exe"; DestDir: "{app}"; Flags: ignoreversion 
  64. Source: "D:\Debug\yroot_beta.vshost.exe.config"; DestDir: "{app}"; Flags: ignoreversion 
  65. Source: "D:\Debug\yroot_beta.vshost.exe.manifest"; DestDir: "{app}"; Flags: ignoreversion 
  66. Source: "D:\Debug\主機助手.exe"; DestDir: "{app}"; Flags: ignoreversion 
  67. Source: "D:\Debug\主機助手.exe.config"; DestDir: "{app}"; Flags: ignoreversion 
  68. Source: "D:\Debug\主機助手.pdb"; DestDir: "{app}"; Flags: ignoreversion 
  69. ; NOTE: Don't use "Flags: ignoreversion" on any shared system files 
  70.  
  71. [Icons] 
  72. Name"{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" 
  73. Name"{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon 
  74. Name"{group}\{cm:UninstallProgram,主機助手}"; Filename: "{uninstallexe}"   
  75.  
  76. ;[Components]   
  77. ;Name: Access; Description: "Access支持" ; Types: Full   
  78.  
  79. [Messages]    
  80. ;卸載對話框說明   
  81. ConfirmUninstall=您真的想要從電腦中卸載主機助手嗎?%n%n按 [是] 將會刪除 %1 以及它的組件;%n按 [否] 則讓軟件繼續留在您的電腦上.   
  82.  
  83. [Run] 
  84. Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent 
  85.  
  86. [Registry]   
  87. Root: HKLM ;SubKey:"Software\ZhugAssistant";ValueType:dword;ValueName:config;ValueData:10 ;Flags: uninsdeletekey 
  88.  
  89. [code] 
  90. //init setup 
  91. function InitializeSetup(): boolean;   
  92. //var 
  93. var Istoken: boolean; //avoid setup again    
  94. begin        
  95. Istoken := true;         
  96. if RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\ZhugAssistant''config'then   
  97. begin   
  98.     MsgBox('程序已安裝,請卸載后再嘗試安裝!',mbConfirmation, MB_OK);   
  99.     Istoken := false;   
  100. end else   
  101. begin   
  102.      Istoken := true;   
  103. end;   
  104. Result := Istoken;   
  105. end
  106.  
  107. //next button 
  108. function NextButtonClick(CurPageID: Integer): Boolean;   
  109. //var 
  110. var ResultCode: Integer;   
  111. var IsSetup : Boolean;   
  112. begin   
  113. IsSetup := true ;   
  114. case CurPageID of   
  115.     wpReady:   
  116.       begin   
  117.        if not RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\CLSID\{6F3DD387-5AF2-492B-BDE2-30FF2F451241}\InprocServer32\12.0.0.0''RuntimeVersion'then   begin   
  118.           if MsgBox('程序執行需要Access數據庫的支持,是否現在安裝?', mbConfirmation, MB_YESNO) = idYes then begin   
  119.            ExtractTemporaryFile('AccessSetup.exe');    ExtractTemporaryFile('DMSkin.dll'); 
  120.             if not Exec(ExpandConstant('{tmp}\AccessSetup.exe'), '''', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) then   
  121.               MsgBox('Access安裝出錯:' #13#13 ' ' + SysErrorMessage(ResultCode) + '.', mbError, MB_OK);   
  122.           end else begin   
  123.                 IsSetup := false ;   
  124.           end ;   
  125.           BringToFrontAndRestore();   
  126.         end;   
  127.       end;   
  128. end;   
  129. Result := IsSetup;   
  130. end
  131.    

 

責任編輯:武曉燕 來源: UP技術控
相關推薦

2022-03-10 07:39:33

.NET部署模式

2020-12-10 08:44:35

WebSocket輪詢Comet

2022-03-24 13:36:18

Java悲觀鎖樂觀鎖

2020-02-10 14:26:10

GitHub代碼倉庫

2019-02-20 14:16:43

2018-06-05 17:40:36

人工智能語音識別

2024-04-11 12:19:01

Rust數據類型

2022-03-07 06:34:22

CQRS數據庫數據模型

2020-03-01 17:53:38

Excel大數據微軟

2023-02-08 09:02:05

VS Code摸魚神器

2018-07-17 14:42:50

2023-11-18 09:09:08

GNUBSD協議

2024-02-28 18:22:13

AI處理器

2021-08-09 09:39:59

Docker部署鏡像

2018-04-12 17:29:43

眾籌Linux紅旗軟件

2021-01-21 10:23:43

數據庫架構技術

2024-08-22 12:31:05

2023-06-30 07:22:48

新元素父節點編號

2018-04-25 06:46:52

2018-08-08 09:30:29

服務器知識Linux系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩国产在线观看 | 中文在线一区二区 | 99re| 狠狠色综合久久丁香婷婷 | av看片网| wwww.xxxx免费 | 一区二区三区播放 | 国产精品不卡一区二区三区 | 四虎影院在线观看av | 91精品国产欧美一区二区 | 成人免费大片黄在线播放 | 999精品视频在线观看 | 亚洲精品国产综合区久久久久久久 | 国产成人精品久久二区二区 | 国产伦精品一区二区三区高清 | 日韩中文在线视频 | 日韩视频精品在线 | 国产高清在线观看 | 色一阁 | 成人做爰9片免费看网站 | 国产91丝袜在线熟 | 日韩欧美一区二区三区四区 | 国产一区二区三区四区hd | 激情欧美一区二区三区中文字幕 | 日本不卡一区 | 最新中文字幕在线 | 超碰人人做 | 一区二区三区在线观看视频 | 亚洲一区二区三区在线播放 | 国产精品美女久久久久aⅴ国产馆 | 搞黄视频免费看 | 成人免费一区二区三区牛牛 | 一区二区三区日韩 | 中文字幕日韩一区 | 欧美在线视频网 | 亚洲精品国产一区 | 成年人网站在线观看视频 | 久久日韩粉嫩一区二区三区 | 国产三级一区二区三区 | 男人天堂av网站 | 国产h在线|