天天看點

InnoSetup打包工具使用;C#打包工具;VB打包工具;EXE打包工具;C++打包工具一、摘要二、什麼是InnoSetup三、什麼時候需要使用InnoSetup四、InnoSetup生成安裝包效果圖五、InnoSetup使用準備工具六、InnoSetup使用介紹七、InnoSetup實作的安裝模版八、其他九、參考

打包工具InnoSetup使用

  • 一、摘要
    • 1.描述
    • 2.關鍵字
  • 二、什麼是InnoSetup
  • 三、什麼時候需要使用InnoSetup
  • 四、InnoSetup生成安裝包效果圖
  • 五、InnoSetup使用準備工具
  • 六、InnoSetup使用介紹
  • 七、InnoSetup實作的安裝模版
  • 八、其他
  • 九、參考

一、摘要

1.描述

  • 本文主要描述的是InnoSetup打包工具的使用,通過本文可簡單的使用InnoSetup工具,簡單的使用模版來生成自己喜愛的界面。
  • 本文主要講述自己如何去使用InnoSetup,網上的參考資料本身也十分多,是以我盡可能簡單的描述其使用方法來幫助新手入門。
  • 本文章主要是描述工具的使用,InnoSetup打包工具本身為開源免費軟體,可免費使用。
  • 鄭重申明,本文章有些内容為其他部落格文章總結産生,如有雷同侵權等描述,請聯系本人删除。

2.關鍵字

打包工具,InnoSetup,上位機打包,配置源碼,安裝包生成。

二、什麼是InnoSetup

Inno Setup用Delphi寫成,其官方網站同時也提供源程式免費下載下傳。它雖不能與Installshield這類恐龍級的安裝制作軟體相比,但也當之無愧算是後起之秀。InnoSetup是一個免費的安裝制作軟體,小巧、簡便、精美是其最大特點,支援pascal腳本,能快速制作出标準Windows2000風格的安裝界面,足以完成一般安裝任務。官網: https://jrsoftware.org/isinfo.php

三、什麼時候需要使用InnoSetup

平時我們Windows軟體開發人員開發完一款軟體後,我們需要将軟體交給使用人員進行使用,一般比較簡單的方法就是把生成的檔案直接傳遞給對方,點選exe執行即可,但是這樣有一個不好的地方就是防毒軟體會經常誤删,版本也沒有控制,當使用者需要解除安裝的時候,我們是不能通過控制台的程式進行删除,隻能将檔案夾整個删除,還有就是有的對電腦不太懂的人員不知道你給的檔案如何去解壓使用,相對麻煩,還有就是我們開發人員想把軟體打包成一個exe檔案,不需要其他的dll等檔案的時候怎麼辦,InnoSetup可以很好的幫助解決這些問題,我之是以喜歡InnoSetup是因為有四個簡單的原因,①操作簡單,配置好後,以後每次執行以下即可生成檔案。②可以生成中文的安裝界面,這個就太香了,支援中文。③可将架構打包在裡面并進行安裝判斷。比如NetFramework。④開源免費,可自定義界面。

四、InnoSetup生成安裝包效果圖

下面軟體截圖為本人使用C#開發的一個會議預約系統的安裝包,打包好的安裝包内由于包含的離線的NetFramework4.7.2架構,是以比較大,你可以選擇線上的NetFramework,這樣安裝包就會非常小,安裝過程中會自動判斷電腦是否已經安裝了NetFramework對應的版本,如果版本過低會提示安裝對應架構,如果已經安裝,則進行軟體安裝。

  • 安裝包如下圖
    InnoSetup打包工具使用;C#打包工具;VB打包工具;EXE打包工具;C++打包工具一、摘要二、什麼是InnoSetup三、什麼時候需要使用InnoSetup四、InnoSetup生成安裝包效果圖五、InnoSetup使用準備工具六、InnoSetup使用介紹七、InnoSetup實作的安裝模版八、其他九、參考
  • 安裝過程中如下圖
    InnoSetup打包工具使用;C#打包工具;VB打包工具;EXE打包工具;C++打包工具一、摘要二、什麼是InnoSetup三、什麼時候需要使用InnoSetup四、InnoSetup生成安裝包效果圖五、InnoSetup使用準備工具六、InnoSetup使用介紹七、InnoSetup實作的安裝模版八、其他九、參考
    InnoSetup打包工具使用;C#打包工具;VB打包工具;EXE打包工具;C++打包工具一、摘要二、什麼是InnoSetup三、什麼時候需要使用InnoSetup四、InnoSetup生成安裝包效果圖五、InnoSetup使用準備工具六、InnoSetup使用介紹七、InnoSetup實作的安裝模版八、其他九、參考
    InnoSetup打包工具使用;C#打包工具;VB打包工具;EXE打包工具;C++打包工具一、摘要二、什麼是InnoSetup三、什麼時候需要使用InnoSetup四、InnoSetup生成安裝包效果圖五、InnoSetup使用準備工具六、InnoSetup使用介紹七、InnoSetup實作的安裝模版八、其他九、參考
    InnoSetup打包工具使用;C#打包工具;VB打包工具;EXE打包工具;C++打包工具一、摘要二、什麼是InnoSetup三、什麼時候需要使用InnoSetup四、InnoSetup生成安裝包效果圖五、InnoSetup使用準備工具六、InnoSetup使用介紹七、InnoSetup實作的安裝模版八、其他九、參考
  • 解除安裝過程中如下圖
    InnoSetup打包工具使用;C#打包工具;VB打包工具;EXE打包工具;C++打包工具一、摘要二、什麼是InnoSetup三、什麼時候需要使用InnoSetup四、InnoSetup生成安裝包效果圖五、InnoSetup使用準備工具六、InnoSetup使用介紹七、InnoSetup實作的安裝模版八、其他九、參考
    InnoSetup打包工具使用;C#打包工具;VB打包工具;EXE打包工具;C++打包工具一、摘要二、什麼是InnoSetup三、什麼時候需要使用InnoSetup四、InnoSetup生成安裝包效果圖五、InnoSetup使用準備工具六、InnoSetup使用介紹七、InnoSetup實作的安裝模版八、其他九、參考
    InnoSetup打包工具使用;C#打包工具;VB打包工具;EXE打包工具;C++打包工具一、摘要二、什麼是InnoSetup三、什麼時候需要使用InnoSetup四、InnoSetup生成安裝包效果圖五、InnoSetup使用準備工具六、InnoSetup使用介紹七、InnoSetup實作的安裝模版八、其他九、參考

五、InnoSetup使用準備工具

  • Windows作業系統電腦一台。
  • InnoSetup增強版下載下傳連結,這個軟體可以在我的資源進行下載下傳,如果沒有積分的朋友可以在下方留言私信我,免費郵箱發送,請勿使用官方最新版或者其他版本打開配置檔案,InnoSetup版本不同有些文法不相容,導緻無法編譯通過,之前遇到的坑,也請大家使用我推薦的版本進行編譯。

    InnoSetup增強版:https://download.csdn.net/download/weixin_44926112/18371628

  • InnoSetup配置檔案,這裡我打包成一個壓縮包,檔案目錄都在,點選連結進行下載下傳。
  • InnoSetup配置,PSD源檔案:https://download.csdn.net/download/weixin_44926112/18372102

六、InnoSetup使用介紹

  • 安裝好InnoSetup後,下載下傳InnoSetup配置檔案,解壓後如下圖所示。
    InnoSetup打包工具使用;C#打包工具;VB打包工具;EXE打包工具;C++打包工具一、摘要二、什麼是InnoSetup三、什麼時候需要使用InnoSetup四、InnoSetup生成安裝包效果圖五、InnoSetup使用準備工具六、InnoSetup使用介紹七、InnoSetup實作的安裝模版八、其他九、參考
  • 要編輯修改的圖檔都已經放在了psd檔案夾中,安裝PS即可進行修改,注意不要動尺寸大小,否者會導緻界面按鈕等失效。
  • 點選編譯源碼build.iss進行檢視,下面對代碼做一些簡單的檢視,便于大家進行修改,這兒我隻展示需要修改的地方,其他地方可不做修改的話自行研究即可。

    宏定義代碼段,也可以自己添加,在這兒通過變量名稱即可取得大緻意思,也是我們需要修改的地方,新手隻需要修改MyAppName ,MyAppNameZh ,MyAppExeName ,OutputFileName ,SourceMain ,SetupIconFilePath,MyAppId 即可。

#define MyAppName "MeetingRoomApp"//APP名稱
#define MyAppNameZh "會議預約系統"//APP中文名稱
#define MyAppVersion "1.1.0"//APP版本号
#define MyAppPublisher "XXXX有限公司"//釋出者
#define MyAppURL "https://www.xxxx.com.cn/"//位址
#define MyAppExeName "MeetingRoomApp.exe"//執行檔案名稱
#define OutputPath ".\out"//輸出檔案路徑
#define OutputFileName "MeetingRoomApp_v1.1.0_setup"//輸出檔案名稱
#define SourceMain ".\app\MeetingRoomApp.exe"//執行檔案,這個很重要,如果是放到預設app目錄,那輸入名稱即可,如果不是要注意路徑
#define SourceFolder ".\app\*"//需要打包的檔案路徑
#define LicenseFilePath ".\resource\license.rtf"//
#define SetupIconFilePath ".\resource\logo.ico"//圖示
#define MyAppId "{{378232C1-71BA-4396-9ABA-48ABB10F3760}}"//唯一GUID,唯一識别碼,就是APP的身份證,生成方式,菜單欄工具-産生GUID
#define ResourcesPath ".\resource\*"//其他資源檔案路徑
           
  • 配置段一般不修改,保持預設即可。
AppId={#MyAppId}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppVerName={#MyAppName}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
LicenseFile={#LicenseFilePath}
OutputDir={#OutputPath}
OutputBaseFilename={#OutputFileName}
SetupIconFile={#SetupIconFilePath}
Compression=lzma/ultra64
SolidCompression=yes
PrivilegesRequired=admin
Uninstallable=yes
UninstallDisplayName={#MyAppNameZh}
DefaultGroupName={#MyAppNameZh}
UninstallIconFile={#SetupIconFilePath}
Versioninfodescription={#MyAppNameZh} 安裝程式
versioninfocopyright=Copyright(c) 2020
VersionInfoProductName={#MyAppName}
DisableReadyPage=yes
DisableProgramGroupPage=yes
DirExistsWarning=no
DisableDirPage=yes
VersionInfoVersion="3.0"
UninstallDisplayIcon={app}\{#MyAppExeName}
LanguageDetectionMethod=uilanguage
ShowLanguageDialog=no
           
  • 檔案路徑段,如果保持路徑不修改,這兒也可以不做修改。
Source: {#ResourcesPath}; DestDir: {tmp}; Flags: dontcopy solidbreak ; Attribs: hidden system
Source: {#SourceMain}; DestDir: "{app}"; Flags: ignoreversion
Source: {#SourceFolder}; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: ".\unresource\skin\*.*"; DestDir: "{app}\skin"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: ".\unresource\plugin\botva2.dll"; DestDir: "{app}\plugin"; Flags: ignoreversion
Source: ".\unresource\plugin\InnoCallback.dll"; DestDir: "{app}\plugin"; Flags: ignoreversion
           
  • 語言段代表安裝過程中的語言支援,InnoSetup官方是不支援中文的,但是有中文語言包擴充,在這兒我已經把檔案放在了resource目錄下,預設隻有中文,如果要加其他支援可自行添加。
  • 代碼段比較複雜,也比較多,其實我們比較關注的就是安裝前的檢查,比如我這兒是檢查的系統環境是否支援NetFramework4.7.2及其更高版本,如果不是,則需要安裝對應的版本,這兒要注意的就是我們如何來判斷電腦已經安裝了對應的版本,可通過官方查詢,通過系統資料庫讀取來判斷,其實看代碼很簡單,對于這種文法,和VB類似。
function CheckNetFramework472():boolean;
var version: Cardinal;
begin
  if not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full') then
  begin
     Result:=false;
     Exit;
  end;
  if RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', 'Release', version) then
  begin
    if version >= 461808 then
    begin
      Result:=true;
      Exit;
    end;
  end;
  Result:=false;
end;

function InitializeSetup(): Boolean;
  var ErrorCode: Integer;
      ResultCode: Integer;
  begin
    ShellExec('open','taskkill.exe','/f /im {#MyAppExeName}','',SW_HIDE,ewNoWait,ErrorCode);
    ShellExec('open','tskill.exe',' {#MyAppName}','',SW_HIDE,ewNoWait,ErrorCode);
    if not CheckNetFramework472() then
    begin
        if MsgBox('您沒有安裝程式執行環境NetFramework4.7.2,程式安裝後将無法運作,是否現在立即安裝?', mbConfirmation, MB_YESNO or MB_DEFBUTTON2) = IDNO then
        begin
          Result:=false;
          Exit;
        end
        ExtractTemporaryFile('NetFramework472.exe');
        Exec(ExpandConstant('{tmp}\NetFramework472.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)
    end;
    result := True;
  end;
           
  • 修改好對應的内容後,點選建構編譯或者Ctr+F9即可編譯,也可以通過運作F9檢視仿真,編譯後一個簡單的安裝包就制作好了。
  • InnoSetup幫助文檔是非常友好的,點選菜單欄幫助即可檢視,我這邊的版本都是翻譯後的,InnoSetup網上資料不是很多,很多都需要自己去檢視幫助即可完成,需要修改的也不多。
    InnoSetup打包工具使用;C#打包工具;VB打包工具;EXE打包工具;C++打包工具一、摘要二、什麼是InnoSetup三、什麼時候需要使用InnoSetup四、InnoSetup生成安裝包效果圖五、InnoSetup使用準備工具六、InnoSetup使用介紹七、InnoSetup實作的安裝模版八、其他九、參考

七、InnoSetup實作的安裝模版

  • 以下的資源都是網絡上下載下傳的,也感謝之前辛辛苦苦的工程師的無私奉獻,這邊我隻把我收集的一些模版圖檔放在這兒,也讓大家感受以下InnoSetup的強大之處。
  • 案例一
    InnoSetup打包工具使用;C#打包工具;VB打包工具;EXE打包工具;C++打包工具一、摘要二、什麼是InnoSetup三、什麼時候需要使用InnoSetup四、InnoSetup生成安裝包效果圖五、InnoSetup使用準備工具六、InnoSetup使用介紹七、InnoSetup實作的安裝模版八、其他九、參考
  • 案例二
    InnoSetup打包工具使用;C#打包工具;VB打包工具;EXE打包工具;C++打包工具一、摘要二、什麼是InnoSetup三、什麼時候需要使用InnoSetup四、InnoSetup生成安裝包效果圖五、InnoSetup使用準備工具六、InnoSetup使用介紹七、InnoSetup實作的安裝模版八、其他九、參考
  • 案例三
    InnoSetup打包工具使用;C#打包工具;VB打包工具;EXE打包工具;C++打包工具一、摘要二、什麼是InnoSetup三、什麼時候需要使用InnoSetup四、InnoSetup生成安裝包效果圖五、InnoSetup使用準備工具六、InnoSetup使用介紹七、InnoSetup實作的安裝模版八、其他九、參考
  • 案例四
    InnoSetup打包工具使用;C#打包工具;VB打包工具;EXE打包工具;C++打包工具一、摘要二、什麼是InnoSetup三、什麼時候需要使用InnoSetup四、InnoSetup生成安裝包效果圖五、InnoSetup使用準備工具六、InnoSetup使用介紹七、InnoSetup實作的安裝模版八、其他九、參考

八、其他

本文主要是講解InnoSetup工具的使用,有些地方可能會有描述性的錯誤,希望看到的朋友及時指出,我會及時更正錯誤,其他地方有些借鑒的描述,寫此文章的目的是為了交流,非商業用途,歡迎私信讨論,感謝大家閱讀。

九、參考

【1】:InnoSetup進階篇https://blog.csdn.net/qq_37518975

【2】:InnoSetup初級篇https://blog.csdn.net/hebbely/article/details/78168071