天天看點

如何使用Inno Setup制作安裝包?

作者:億佰特物聯網應用

此篇文檔主要講述了如何使用Inno Setup制作安裝包,如果要打包的内容已經準備好,可以跳過“QT操作”部分。

QT操作

1.在QT中将編譯模式設定成Release,點選編譯後在檔案夾中找到生成exe檔案,并将其複制出來單獨放到一個檔案夾中。

如何使用Inno Setup制作安裝包?

2.考慮到使用者可能将軟體安裝到Program Files (x86)等系統檔案夾中,此時如果程式沒有管理者權限會出現一些問題,是以可以給編譯出的exe添加管理者權限。在工程檔案夾中,pro檔案的同目錄下建立一個.manifest檔案,這裡筆者用getAdmin.manifest舉例。向getAdmin.manifest中寫入下列代碼。

1. <?xml version='1.0' encoding='UTF-8' standalone='yes'?>

2.<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>

3. <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">

4. <security>

5. <requestedPrivileges>

6. <requestedExecutionLevel level='requireAdministrator' uiAccess='false' />

7. </requestedPrivileges>

8. </security>

9. </trustInfo>

10.</assembly>

然後找到與工程編譯出的exe檔案同名的.rc檔案,向其中添加下列代碼。

1.1 24 DISCARDABLE "getAdmin.manifest"

如果沒有找到.rc檔案,可以自己建立一個,這裡筆者使用getAdmin.rc舉例。向建立的getAdmin.rc檔案中寫入上述代碼,然後在QT中打開pro檔案添加下列語句。

2.RC_FILE += getAdmin.rc

以管理者身份運作重新運作QT點選編譯,如果此時編譯出的exe檔案圖示的右下角有小盾牌标志,則代表管理者權限添加成功。

3.通過搜尋找到QT 5.14.2(MinGW),版本根據QT工程的編譯器選擇,如果是32-bit的編譯器,那麼MinGW就使用32位版本。如果QT工程使用的是MSVC編譯器,這裡也選擇同版本的MSVC編譯器。

如何使用Inno Setup制作安裝包?

4.打開後,輸入"cd exe檔案的路徑"來使該工具找到exe檔案存儲位置。然後輸入"windeployqt 檔案名稱.exe",該工具會自動添加此exe檔案需要的.dall檔案。但是該工具添加的.dall檔案不一定齊全,是以.dall檔案自動添加完畢後,手動點選exe檔案,如果報錯,則根據提示資訊,在QT安裝檔案夾找到對應的dall檔案并手動添加。直到點選exe後能正常打開使用。

如何使用Inno Setup制作安裝包?

Inno Setup操作

1.打開Inno Setup後,選擇使用向導,根據提示建立一個腳本模闆。

如何使用Inno Setup制作安裝包?

2.點下一步,填寫程式資訊。

如何使用Inno Setup制作安裝包?
如何使用Inno Setup制作安裝包?

3.點選浏覽,選擇之前準備好的exe檔案。點選添加檔案,把exe檔案同一目錄下的其它檔案全部添加。點選添加檔案夾,把exe檔案目錄下的其它檔案夾全部添加。完成後點選下一步。

如何使用Inno Setup制作安裝包?

4.根據需求選擇建立快捷方式,完成點下一步。

如何使用Inno Setup制作安裝包?

5.許可檔案不是必要的,點選浏覽可添加安裝前和安裝後顯示資訊檔案,安裝前顯示資訊檔案通常為使用者協定。支援txt和rtf檔案格式,添加完成後點選下一步。

如何使用Inno Setup制作安裝包?

6.語言選擇中文。

如何使用Inno Setup制作安裝包?

7.選擇編譯出的安裝包的儲存位置、名稱和圖示,安裝密碼可以不用設定。

如何使用Inno Setup制作安裝包?

8.勾選"是,使用#define編譯指令",點選下一步完成模闆建立。此時會彈出一個提示框詢問“是否立即開始編譯”,點選否。

如何使用Inno Setup制作安裝包?

9.對模闆生成的添加檔案夾的代碼進行修改。向導生成的模闆代碼,會把檔案夾中的檔案複制到exe同一目錄下,并删除原本的檔案夾,這會導緻安裝後的exe檔案報錯。将代碼修改成如下格式,點選編譯即可得到一個最簡單的安裝包。

1.Source: "C:\Users\21195\Desktop\11\platforms\*"; DestDir: "{app}\platforms"; Flags: ignoreversion recursesubdirs createallsubdirs

2.Source: "C:\Users\21195\Desktop\11\iconengines\*"; DestDir: "{app}\iconengines"; Flags: ignoreversion recursesubdirs createallsubdirs

10.在wpInfoBefore頁面,即“顯示安裝前檔案”的那個頁面,添加一個複選框。複選框顯容為“筆者已閱讀,并同意該協定”,并将該頁面的 “下一步”按鈕預設設定為不可用。隻有使用者勾選複選框,表示同意協定,才能點選下一步繼續安裝,代碼如下。

1. var

2. AgreementCheckBox: TNewCheckBox;

3. procedure AgreementCheckBoxClick(Sender: TObject);

4. begin

5. // 更新下一步按鈕的狀态

6. WizardForm.NextButton.Enabled := AgreementCheckBox.Checked;

7. end;

8. procedure InitializeWizard;

9. begin

10. // 建立一個複選框控件

11.

12. AgreementCheckBox := TNewCheckBox.Create(WizardForm);

13. AgreementCheckBox.Parent := WizardForm.InfoBeforePage;

14. AgreementCheckBox.Left := WizardForm.InfoBeforePage.Left + ScaleX(0);

15. AgreementCheckBox.Top := WizardForm.InfoBeforePage.Height - ScaleY(22);

16. AgreementCheckBox.Width := WizardForm.InfoBeforePage.ClientWidth - Scale X(16);

17. AgreementCheckBox.Caption := '筆者已閱讀,并同意該協定';

18. AgreementCheckBox.Checked := False;

19. AgreementCheckBox.OnClick := @AgreementCheckBoxClick;

20.

21. end;

22. procedure CurPageChanged(CurPageID: Integer);

23. begin

24. // 在InfoBeforePage頁面時禁用下一步按鈕

25. if CurPageID = wpInfoBefore then

26. WizardForm.NextButton.Enabled := False;

27. end;

如何使用Inno Setup制作安裝包?

11.為了避免安裝時因權限不足發出發生錯誤,可以給安裝包添加管理者權限。在腳本的[Setup]節點添加 PrivilegesRequired=admin。進入Inno Setup安裝根目錄,找到檔案SetupLdr.e32,這是一個二進制配置檔案,需要用到ResHacker.exe這個工具修改。找到<requestedExecutionLevel level="asInvoker" uiAccess="false"/></requestedPrivileges>,修改為<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/></requestedPrivileges>,如下圖所示。重新編譯後若安裝包右下角出現小盾牌,則管理者權限添加成功。

如何使用Inno Setup制作安裝包?

其他文章閱讀推薦:

《革新而來!強适應性序列槽伺服器,RJ45與序列槽雙向互轉+多通信機制》

《高性能低延遲4G CAT1子產品,4G全網通+高精度定位》

《LoRa微型DTU,颠覆設計!無線數傳電台體積竟能如此小》

《三種低功耗模式,多路Socket,超低功耗無順序列槽Wi-Fi子產品》

繼續閱讀