原本對我來說對程序開發以及過程最重要,開發完成後打包就無所謂了,隨意選擇一個打包軟件打包好軟件即可,但是通過這幾年用過的幾套打包軟件便捷性、功能性、友好性、缺陷性來看,使用一套好的打包軟件還是要有選擇的,一個好的軟件開發完成了,何必再最後的關節上讓你的軟件黯然失色呢?!在此,本人根據我使用的打包軟件經驗客觀性的說明一下幾個打包軟件的好壞!
首先本人使用過的打包軟件包括:install shield ,Advanced Install,SetupFactory; 其中install shield是在方正的時候使用到的,Advanced Install是在深圳的一家安防公司使用過的,SetUpFactory是我現在使用的,通過使用經驗來看我使用的順序也表明了我對打包軟件優缺點的好快的看法,雖然都是國外的打包軟件,個人認為從軟件各方面來講SetupFactory要好於Advanced Install,Advanced Install也要好於Install Shield;
Install shield是我最初使用到的打包軟件,方正的同事一直跟我說功能非常強大,支持自定義腳本編寫,由於當時只用到這款打包軟件,我也一直認為這軟件非常好使,功能非常強大,但是我當時用的但覺就是操作復雜,有很多操作不知道往哪裡添加,哪裡刪除,當然基本的配置是滿足了,但是要滿足自定義操作,比較難,寫腳本沒有半自動化,需要特意學腳本語言之後才能順利完成自定義操作。
Advanced Install打包工具是我結束北漂後使用到的一款打包軟件,當然跟我的工作經歷有關,也是同事使用的打包軟件,我發現南方的偏向使用Advanced Install工具,可能是感覺的原因吧,應該跟區域關系不大。在我第一次使用這個工具的時候,相比第一個工具,我猛然感覺這東西真的好使,為什麼呢?其實不是應為打包用到的基本操作簡單,而是相比Install shield而言,他打包軟件界面布局簡單友好,分為左右兩側,所有的功能都從左邊列出來了,而Install shield功能列表嵌套很深,有時候不好找,所以從使用角度上來講:直接明了,一覽無余;友好的操作界面遠遠吸引了我,當然這家伙也支持腳本添加,唯一的感覺就是和Install shield一樣難用,相對而言,使用Advanced Install時間長度比較長,發現的問題非常多:自定義操作不起作用;對系統兼容性不好,到某些客戶那裡同樣的系統跑步了安裝包;之前保存的配置在中間加入新的文件後可能配置就沒有了,需要一個一個重新配置;界面排版沒有問題,但是沒有完全按照安裝順序去布局,操作起來感覺一直缺少東西,當然還有很多很多bug,關於windows服務的、關於批處理操作的、關於腳本的、關於多語言的、關於多程序包組織的等等問題,其實在遇到這麼多問題之後,我對它的印象大大降低了,一直有想換一個打包軟件的看法,但是一直沒有搜索到比較好的打包軟件,所以一直不敢換。
後來,軟件開發完成打包後送檢後,發現很多關於打包軟件問題,測試的一位同事建議我更換為SetupFacotry,說這款軟件是他們公司之前使用到的一款很好的軟件,我嘗試安裝了一把,但由於對改軟件不太熟悉,時間比較緊,所以沒有使用過,但是隨著項目進行下去,打包的次數一次一次,每次bug庫都免不了這些打包問題的提出,加之系統太大了,組件或程序包多了,自定義操作繁多,所以依然而言決定更換打包軟件,在經過一段時間學習和請教之後,打完第一個包,而且在之前客戶運行機器上跑不起來的軟件也能跑了,這讓我感覺好多了,它打包真的方便很多。優點相比Advanced Install也更明顯:
(1)界面排版與Advanced Install一樣,很友好,但是左側的排版順序讓我感覺非常爽,是按照軟件安裝順序進行的,所以我想更改哪個步驟很快能定位到;
(2)右側顯示了工程用到的所有組件,這些組件可以通過上方的過濾器顯示全部或顯示你想看到的組件,如所有、打包的、未打包的、exe或者自己編寫過濾器,這樣一個大的工程幾百上千既能統一管理浏覽,也能快速定位操作某一個組件(如快捷方式,屬性,程序包等);
(3)右側的文件排列順序是根據所在文件夾的順序,而不是凌亂的,為什麼好呢?可以選中某個文件夾的所有組件點擊屬性,將所有在改文件夾的組件歸為某一個程序包,說道程序包這是Advanced Install的一大弱點,Advanced Install是在“組織”功能裡面的需要新建組件包或叫程序包,然後一個一個見組件拖入到改包,你想想上千個诶,居然不支持多選拖入!一個一個拖入算了,最大的問題是bug,加入新組件包加入新的組件,它不會自己歸類到某一個文件夾,必須用戶自己記住添加了那些新組件,然後一個一個拖入到組件包中,不然,哼哼,用戶選擇組件包的時候安裝到另一個組件包去了,直接跑不起來!這是最惡心的事,遇到過不下十次!!!而且它的操作都必須選擇“當前操作組件包”,想操作另一個組件包,必須隨時切換不然在很多地方選擇的時候組件包裡的組件是不顯示的,哎,想想我都想殺人啊。
(4)多語言支持要好於Advanced Install,用過Advanced Install的人應該支持,支持多語言必須修改“翻譯”裡面的各張語言表,當然這是正常的,不然怎麼支持多語言呢?但是問題來了,它有很多字段不能修改,臥槽!TMD中文安裝到處一個英文一個漢字,誰受得了?SetupFactory就到位了而且連快捷方式都是多套語言的,Advanced Install還不知道哪裡能支持多套快捷方式的多語言,惡心!
(5)操作界面功能比Advanced Install更直接更簡單,很容易找到你需要的修改內容,即使不知道,菜單或按鈕稍微來回按一按就能找到了;
(6)自定義操作灰常灰常好,Advanced Install裡面的就差遠了,感覺他們的程序員跟SetupFactory程序員不是一個等級的,寫出來的東西差太多了,我使用的最多的自定義操作就是文件操作、注冊表、windows 服務、bat批處理,這些所有操作裡面都有了半自動化的腳本編輯了,我根本不需要寫具體的腳本,選擇對應操作,確定後自動生成腳本了,而且支持n個操作,不想說了,必須給贊!!相比而言Advanced Install就差遠了,有個“自定義操作”模塊,裡面布局很爛,含義模塊,執行還有問題,一直報錯,垃圾!!
通過上述個人看法,我教大家使用一下SetupFactory,我的需求就是:
(1)安裝 :路徑選擇-程序包選擇(安裝組件選擇)-完成-創建服務器-運行批處理
(2)卸載:運行批處理-停止刪除服務-刪除開始菜單目錄以及文件夾
(3)其他:打包ICon修改為自定義、安裝樣式或風格
首先帶大家看看打包過程:
加入我的打包工程如下(為了能讓大家看到具體的結構和組件,這裡就暴露一下我的平台名稱和組織):
我需要打包的文件接近5000個,分為圖上正方形圈出來的7個組件包(程序包),也就是安裝的時候可以選擇性的安裝這7個組件,包括一個windows服務(nvms_service.exe)和兩個批處理文件,一個是安裝完成運行的批處理,一個是卸載前需要執行的批處理。
(1)打開SetupFactory,這裡我用的7.0破解版,選擇“創建新工程”向導,按照向導一步一步完成基本打包過程即可
(2)填寫公司、軟件名、公司網址,點擊下一步
(3)選擇你打包的文件的文件夾路徑,點擊下一步
(4)選擇窗口樣式,我們默認即可,選擇下一步
(5)選擇窗口主題樣式,我們按照自己喜歡選擇即可,點擊下一步
(6)選擇語言支持,我們選中中文語言和英文兩種即可,將中文設置為默認,點擊下一步
(7)選擇從屬技術vb版本,我們不需要選擇,點擊下一步即可
(8)選擇支持的操作系統版本,我們默認選擇所有即可,點擊完成,基本的額工程自動建立起來了
(9)最終創建的基本界面
(10)如果文件不全,需要添加文件,在左側一欄,第一個小欄目就可以編輯文件先關屬性,接下來我們修改版本相關信息,選擇第二小欄目中的設置-->會話設置,彈出改小欄目的帶tab的所有配置選項並選中了會話設置選項表
設置好產品名稱、產品公司、版權,可以修改默認AppFolder即默認應用程序安裝路徑和默認應用快捷方式路徑文件夾;
可以修改背景樣式,選擇背景演示選項卡:
我們勾選“顯示背景窗口”復選框,更為為自己喜歡顏色或者直接使用貼圖,可以自己操作摸索下即可完成;
更改需求:
更改支持的操作系統,這裡支持操作系統很豐富,功能很強大,保持默認配置即可;
日志:
這是安裝日志記錄跟蹤,方便錯誤後追蹤錯誤,保持默認即可;
高級:
這裡我們可以使用靜默安裝,這裡我不需要靜默安裝;可以修改安裝級別,為當前用戶還是所有用戶;可以修改默認的打包圖標,這裡我使用了自定義的圖標替換
(11)程序包組件的分離打包(用戶自定義安裝組件包)
在設置裡剩下的3項就是安全、程序包、語言;對於安全就是一些序列號等配置,這裡跳過,語言就是多語言配置,很簡單;重點講的就是程序包;
程序包:也就是組件包,就是安裝的時候用戶選擇安裝那些組件包而不是所有一塊安裝,點擊“程序包”功能
這裡我根據我最初的需要建立了7個組件包,可以獨立安裝使用,添加的時候選擇“添加”按鈕:
填入程序包Id,組件名稱和描述,然後切換英文語言,填入相應的組件包名和描述,ID是共用的,為了不出錯,最好ID使用英文,點擊確定即完成程序包的添加,如果需要修改,選擇編輯即可
(12)為程序包(組件包)分配具體組件
程序包建立好後,必須將對應組件歸類到對應的程序包,我們看右側的文件列表
我比較欣賞這裡的排序,是根據不同的組件包排序(我的組件名也是根據我的工程文件夾名字來的),我們選中對應的組件,右擊菜單裡的文件屬性菜單
然後選擇多文件屬性的“程序包”選項卡,這個選項卡裡顯示了我們剛建立的所有程序包名,我們勾選對應的程序包即可,此時我們剛剛選中的所有文件都會被打包,並且打包到組件AlarmServer中去;
同理,我們將所有組件分配到對應的組件包中去即可;此時所有組件都變為打包狀態,如果沒有分配就是未打包狀態
程序包分配好後,我們需要在安裝前顯示該程序包(默認只有一個程序包,所以不會顯示該對話框,需要用戶添加對話框才行)
選擇安裝之前,在彈出的對話框中刪除不需要的什麼用戶協議等對話框屏幕,添加“程序包選擇“對話框,移動到指定位置即可(通過上下按鈕):
將右側建立並分配好的組件程序包向左移動到左側樹上即可,點擊確定,完成程序包,安裝時候會顯示該對話框;
(13)為對應exe創建快捷方式
因為右側的文件有5000多個,太多了,我們只要將exe建立快捷方式即可,選擇過濾器,過濾右側的文件
雙擊某組件:
在彈出的文件屬性中,選擇“快捷方式”選項卡,選擇在桌面和開始菜單的應用程序文件夾生成快捷方式即可,當然我們可以自定義快捷方式生成位置,點擊確定即可位該組件生成快捷方式,同理,其他快捷方式生成,默認情況下會給我們的exe和批處理都生成快捷方式,如果不需要,去掉復選框即可;
所有的快捷方式生成後,文件列表的“快捷方式”一列就有對應的信息了
(14)樣式修改
在屏幕一欄中,選擇工程主題,我們可以修改我們需要的樣式或主題,甚至可以修改自己的皮膚庫
自己取模塊,很簡單,此處不多做介紹。
(15)windows服務的建立
因為我的工程有一個windows服務器,必須在安裝完成後安裝windows服務,所以在左側的屏幕(就是安裝所有對話框屏幕),選擇“安裝之後”,彈出對話框:
選擇結束安裝,點擊編輯按鈕,就是在點擊“完成”(下一步)按鈕操作:
設置文件路徑必須引用用戶選擇的文件的路徑,所以使用變量,此時選擇%AppFolder%變量,結合SessionVar.Expand()展開變量路徑即可獲取全路徑,此處服務器路徑:
SessionVar.Expand("%AppFolder%\\NVMS_Service.exe");添加完成後自動生成對應自動化腳本,當然熟悉的用戶可以直接用代碼搞定不需要操作;
文件操作一樣可以這麼操作,此處不再介紹,當然系統支持系統操作(重啟、關機等),文件操作(移動、命令、刪除、運行等)、服務操作(創建、刪除、暫停、重啟等)
(16)構建設置與構建
我們生產一個exe包,設置生產包路徑和名稱即可
(17)安裝效果
下一步即可,完成了windows服務安裝和bat處理運行