Inno Setup制作應用程序安裝包


我最近寫了一個MFC應用程序,想發給其他的小伙伴玩一玩,直接發了個exe文件過去,結果發現小伙伴那邊打不開。原來這個exe文件雖然是MFC靜態編譯的,但是還依賴了其他幾個.dll文件,需要把這幾個dll文件和exe文件放在同一個目錄下,才能正常打開。這也沒什么,后來發現還不行?跳出來一個提示框,大意是在某個路徑下沒有找到需要的文件(這個程序基於其他軟件的開發包,所以就會在沒有安裝該軟件的電腦上出現這樣的提示)。。。那怎么解決呢?難道移植到其他電腦的時候,還要手動復制文件到指定的目錄。。。

更便捷的辦法,就是把這些文件打包成一個安裝文件。這樣,在安裝過程中,就可以把文件復制到指定的目錄,而且不需要的時候還可以把這個程序完整地卸載掉。

選擇安裝包制作軟件的時候,由於VS2013沒有自帶的安裝包軟件,第三方的Install Sheild又是個收費的軟件,申請試用版也比較繁瑣,我最終選了Inno Install這個小巧的免費程序,簡單易用,功能對 我來說也已足夠。這里是Inno Setup官方下載地址:http://www.jrsoftware.org/isdl.php。注意,這個是英文版的,想要中文版的可以到網上找找。

Inno Setup的具體使用,可以參考這篇文章“快速打包你的應用程序——Inno Setup

通過以上,基本就可以使用啦。

有一個小小的不足,就是安裝程序之后,生成的卸載文件的名字是unins000.exe等等。而且Inno Setup制作的安裝包,可以允許同一個程序在同一個目錄下安裝多次。要修正這點不足,可以在通過向導自動生成.iss文件后,在文件中添加一些代碼。

1、首先預定義卸載文件的文件名,在文件開頭的#define部分添加

#define MyAppUninstallExeName "Uninstall.exe"

 2、創建卸載圖標,在[Icons]部分添加(如果已經在制作向導時勾選創建卸載圖標,那么這一句應該會自動生成,不必手動添加了)

Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{app}\{#MyAppUninstallExeName}"

3、執行代碼,改變卸載文件的文件名。在[Run]部分的前面添加

[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
uninspath,uninsname,NewUninsName,MyAppName:string;
begin
if CurStep=ssDone then
begin
NewUninsName := 'Uninstall';
MyAppName:= 'Measurement';

uninspath:=ExtractFilePath(ExpandConstant('{uninstallexe}'));
uninsname:=Copy(ExtractFileName(ExpandConstant('{uninstallexe}')),1,8);
RenameFile(uninspath+uninsname+'.exe',uninspath+NewUninsName+'.exe');
RenameFile(uninspath+uninsname+'.dat',uninspath+NewUninsName+'.dat');

if RegKeyExists(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\'+MyAppName+'\_is1') then
begin
RegWriteStringValue(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'+MyAppName+'_is1','UninstallString','"'+uninspath+NewUninsName+'.exe"');
RegWriteStringValue(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'+MyAppName+'_is1','QuietUninstallString','"'+uninspath+NewUninsName+'.exe"/SILENT');
end ;
end ;
end ;

這里我的App名字是Measurement,根據自己的情況可以給它賦成自己的AppName。 

4、使用Inno Setup打包安裝程序還有一些問題,比如重復安裝檢測和.net框架安裝檢測等等。這些問題都可以到網上找到解決方案。

以上兩個問題可以參考這篇文章來解決,使用inno setup打包程序完整腳本(.net框架檢測,重復安裝檢測)  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM