前言:工具就像樂高,你不必研究它到底能拼出多少模型,只需要研究哪些模塊可以拼出你想到的。
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)常用手冊……