.NET第三方打包工具(Setup Factory)常用手冊


前言:工具就像樂高,你不必研究它到底能拼出多少模型,只需要研究哪些模塊可以拼出你想到的。

SetupFactory簡介

這是(藍玫瑰)公司開發的一套打包-補丁解決方案的打包工具,使用范圍廣、簡便好用、自定義程度高、又兼顧了默認簡單打包的效果,
更是設計了一套自主的腳本開發語言,完全實現了我們日常需求的所有幻想。

1. 安裝

安裝部分請自行下載,大多附帶安裝教程-下一步-完成。
注意事項:踩坑過程中下載了一款漢化的中文版9.5.3軟件有BUG,Action的功能,設置的腳本無效,不能執行(后面會提到),建議安裝英文版。

2. 創建項目

2.1. 打開Setupfactory

這里新開始,我們就選擇第一項:創建新項目,點【OK】,一般默認打開上一次的項目。如下圖:

2.2.輸入信息

這里的信息包含公司、軟件名、版本,網址等,會顯示在本機的程序列表里,如下圖:

2.3. 根據安裝環境選擇平台

2.4.選擇打包程序的運行文件夾

如果有子文件夾,如圖打勾

2.5.選擇多語言並設置默認語言

之前的向導、風格,連續【下一步】。
在安裝時,如果沒有選擇語言的界面,會按照默認語言提示消息,如果有選擇語言的界面,會按照相應語言提示消息。

2.6.選擇.net框架

如果選擇了對應的框架,需要在SetupFactor安裝目錄的Dependencies里增加相應的安裝包,否則打包時報錯。比如選擇了.net 4.0:

2.7.創建完成

連續【下一步】,前面選擇的安裝文件都被加載進來了。

3. 打包設置

添加完安裝文件列表,就需要對左側的功能菜單,做一些操作了。

3.1.Files,主要是對打包文件的一些增刪操作


在EditFileProperties中,一般有兩個界面需要修改,主要針對執行程序.exe,主要是同目錄重復安裝時,是否覆蓋的問題

設置圖標和快捷方式的位置,比如桌面、開始菜單、任務欄等

3.2 Settings

這個功能就是我們之前在創建項目時錄入的信息,可以在這里更改,比如版本信息,系統要求,日志也是默認的追加。當然還有密鑰和使用期限,這里項目沒用到,如有需要,可自行研究,以后用到再來補充。

3.3 Screens

主要分為主題、安裝前、安裝中、安裝后四小節,主要時我們一般的安裝過程中的彈窗步驟和內容。
安裝前有一些默認的步驟,比如歡迎界面、許可證界面、密鑰、用戶信息、安裝路徑、快捷方式權限等,當然也有自定義的界面,則需要用到腳本了。可以設置每一幕的順序,也可以增刪一些步驟,並且每一幕都可以編輯。每一幕的編輯界面又分為:
Settings:主要是界面的顯示內容編輯,比如歡迎界面,改寫成自己公司的話術,許可證等內容。
Actions:操作腳本,這里又分了加載前,點擊幫助、返回、下一步、取消等按鈕的一些操作,常用都不需要修改。

3.4 Action

剛才我們說到Screens的每一小節在編輯時都有一個Action,那是指當前步驟的一些操作Action,這里的Action指整個安裝EXE的Action,主要有開始時(運行exe,但沒顯示Screens中的歡迎界面(我把歡迎設置成第一步))、安裝前(Ready Install)、安裝失敗、安裝后、關閉時。

由於我們需要在安裝前檢測是否已經安裝過本軟件,如果安裝了就先卸載(當然也可以直接覆蓋).檢測是否安裝也有很多方法,比如安裝目錄是否存在(但是這個不太靠譜,畢竟安裝目錄可以選,除非前面的Screens里刪掉選擇安裝目錄,並且設置默認安裝目錄),還是采取注冊表比較可靠。思路是這樣的,在運行后,檢測注冊表是否存在鍵值,再獲取數據,再驗證路徑和卸載文件是否存在,再卸載。在卸載完后,刪除注冊表鍵值。在新安裝完,再在注冊表寫入新的安裝信息。
運行時腳本:

--檢測注冊表是否存在鍵值
existkey = Registry.DoesKeyExist(HKEY_CURRENT_USER, "Software\\zybio\\akpath");

if (existkey) then
	-- 詢問是否卸載,這里也可以改成 卸載、覆蓋、取消三選項的彈窗,如果有覆蓋選項,要考慮新安裝路徑和舊安裝路徑是否一致的問題,這里采用的是直接卸載
	dresult = Dialog.Message("提示", "檢測到已安裝本軟件,是否先卸載?", MB_OKCANCEL, MB_ICONINFORMATION, MB_DEFBUTTON1);
	--返回點擊的按鈕值
if (dresult ==1) then
	-- 如果是卸載,就讀取數據,安裝路徑和卸載文件路徑
	resultpath = Registry.GetValue(HKEY_CURRENT_USER, "Software\\zybio\\akpath", "akpathvalue", true);
	resultfile = Registry.GetValue(HKEY_CURRENT_USER, "Software\\zybio\\akfile", "akfilevalue", true);
	--判斷路徑和文件是否存在,否則如果注冊表有值,但是文件不存在,會報錯
	existpath = Folder.DoesExist(resultpath);
	existfile = File.DoesExist(resultfile);
	if (existpath and existfile) then
	-- 執行卸載
	resulttest = Shell.Execute(resultfile, "open", "/U:Uninstall/uninstall.xml", resultpath, SW_SHOWNORMAL, true);
	--加一個延時
	Application.Sleep(200);
	end
else
	-- 如果點擊取消,就彈退出框
	Application.Exit(EXIT_REASON_USER_ABORTED);
end
end

圖:

安裝后腳本:

--往注冊表寫鍵值
Registry.CreateKey(HKEY_CURRENT_USER, "Software\\zybio\\akfile");
Registry.SetValue(HKEY_CURRENT_USER, "Software\\zybio\\akfile", "akfilevalue", SessionVar.Expand("%AppFolder%\\uninstall.exe"), REG_SZ);

Registry.CreateKey(HKEY_CURRENT_USER, "Software\\zybio\\akpath");
Registry.SetValue(HKEY_CURRENT_USER, "Software\\zybio\\akpath", "akpathvalue", SessionVar.Expand("%AppFolder%"), REG_SZ);

圖:

卸載時腳本:

--刪除鍵值,如果公司有多個產品,不建議刪除上級目錄,只刪除本軟件相關鍵即可。
Registry.DeleteKey(HKEY_CURRENT_USER, "Software\\zybio\\akpath");
Registry.DeleteKey(HKEY_CURRENT_USER, "Software\\zybio\\akfile");

圖:

當然了,剛才Action里可沒卸載相關的步驟啊,那是在接下來的卸載功能里,Action里的就到這里了。

3.5 Resource

主要是一些資源環境之類的需要安裝的內容,比如mysql等附帶程序,項目沒用到,如果有需要的,自行研究腳本,如果以后用到,再來補充。

3.6 Uninstall


卸載主要有兩個設置點,設置靜默卸載和前面講到的,卸載時刪除注冊表等操作。

4.打包設置和打包

如圖中的build settings和build,設置中主要是圖中的安裝包圖標設置,在前面的文件屬性設置中也有一個圖標設置,那是執行文件其他默認即可。然后打包,就完成了。

預告

下一篇是兄弟篇 補丁工具(Visual Patch)常用手冊……


免責聲明!

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



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