標籤:
原本對我來說對程式開發以及過程最重要,開發完成後打包就無所謂了,隨意選擇一個打包軟體打包好軟體即可,但是通過這幾年用過的幾套打包軟體便捷性、功能性、友好性、缺陷性來看,使用一套好的打包軟體還是要有選擇的,一個好的軟體開發完成了,何必再最後的關節上讓你的軟體黯然失色呢?!在此,本人根據我使用的打包軟體經驗客觀性的說明一下幾個打包軟體的好壞!
首先本人使用過的打包軟體包括: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處理運行
打包軟體使用