VMware ThinApp 是一款應用程式虛擬化工具 ,但對於我來說用的更多的是製作單檔案軟體和便攜軟體。
VMware ThinApp將程式相關資源如exe、dll、ocx、登錄機碼等封裝到單一的EXE檔案中,程式運行時需要的資源也都從這個單EXE的虛擬環境中,從而實現與作業系統的隔離。
藉助VMware ThinApp的封裝可以製作比較純正的單檔案軟體 ,而簡單設定參數後,VMware ThinApp也能充當製作便攜軟體的角色,大部分情況下,VMware ThinApp也確實能出色的工作。
之前一直想做一個簡單的ThinApp使用教程,不過總是沒堅持下來,這次藉著新版VMware ThinApp的發布就先整理出一個製作思路來吧,希望能與大家共同探討學習下。不過現在我還是不太喜歡單檔案軟體了,尤其是ThinApp封裝的,更傾向於綠色軟體、便攜軟體和免安裝軟體。
1. 首先運行程式Setup Capture.exe ,ThinApp會以嚮導模式完成程式打包,點擊Next繼續。
2. 這裡簡單介紹了注意事項,最主要的就是在一個乾淨的系統 上掃描形成系統快照,好處就是能得到程式正常運行所需要的最多資訊。
如需要自訂掃描配置,點擊Advanced settings… ,這裡可以設定需要掃描的磁碟機和註冊表分支,設定好之後確定返回。
3. 點擊Next後ThinApp會以掃描當前檔案系統和註冊表並形成一個快照,ThinApp正在儲存快照:
待系統快照完成之後,VMware ThinApp會給出提示,即開始安裝並配置好你需要封裝的程式,建議將程式安裝到預設位置 。一切完成之後點擊Next繼續:
4. VMware ThinApp進行程式安裝後的系統快照掃描 :
掃描完成後將會提示選擇程式進入點,即從哪個程式開始啟動,一般就是主程式檔案 ,通常ThinApp會自動選擇好,點擊Next繼續。
5. 進入Sandbox Location設定,Sandbox是Thinapp的沙盤或緩衝目錄,及程式所作更改的儲存路徑,以後再運行封裝的程式時會從Sandbox中讀取配置資訊,如果刪除Sandbox的話,程式就會複原為預設狀態(即快照時的狀態) ;
VMware ThinApp提供了三種模式:
* User's profile (%AppData%Thinstall 目錄就是系統的Application Data目錄;
* USB flash / portable media 就是將Sandbox儲存到exe檔案所在路徑,即相當於製作便攜軟體了、Sandbox路徑就跟封裝出的程式在同一個目錄中。
6. 點擊Next進入System Isolation模式設定;所謂的Isolation modes就是設定虛擬程式所做的更改如何影響到實際的電腦環境 。
Merged isolation mode (合并模式)允許虛擬程式在實際的檔案系統中儲存檔案(如c:user路徑,但系統目錄除外)、或者說封裝後的程式(Thinstalled App)對檔案系統的更改是合并進現有的檔案系統的;
而選擇WriteCopy isolation mode 模式後,虛擬程式所作的更改只會儲存到案頭和文檔目錄,而儲存到其他目錄(如c:user)是不可見的(被重新導向並儲存到到了Sandbox中),或者說封裝後的程式對檔案系統的更改將不會在實際的檔案系統中可見,轉而儲存到Sandbox中,如處理後的圖片等。這裡Merged isolation mode用的比較多。
7. 點擊Next繼續,這裡可以設定Thinapp工程檔案的儲存路徑,還可以設定封裝時的壓縮模式(Compression);
No compression即為不壓縮, Fast compression為快速壓縮模式;建議選擇Fast compression ,能提供57%的壓縮率 ,而程式啟動時間跟No compression相差不多,就是第一次封裝的時候時間較長。
點擊Next後VMware ThinApp開始儲存工程檔案:
8. 儲存完之後,你有兩個選擇: Build Now直接以預設參數產生虛擬化程式,或Browse Project返回到工程檔案目錄自訂更多進階選項。
這是直接選擇Build Now後的情況,最後會提示Build Complete,封裝後的程式在工程目錄的bin檔案夾中:
9. 選擇Browse Project瀏覽到工程檔案目錄。在這裡可以刪除一些不必要的檔案以減少封裝後的檔案大小,如刪除協助檔案、卸載程式等 ;而這裡的Package.ini 就是封裝參數設定檔,由build.bat調用,我在這裡說明一下常用的參數。修改參數後重新運行build.bat即可產生虛擬化程式 。
壓縮和分離模式 ,這在前面的嚮導已經設定過了,如果不滿意地方,也可以直接在Package.ini中更改:
可選項有:
NoneCompressionType=None
CompressionType=Fast
DirectoryIsolationMode=Merged
DirectoryIsolationMode=WriteCopy
SandboxPath 設定:SandboxPath即Sandbox路徑,SandboxPath即可以用相對路徑,也可用絕對路徑。
SandboxPath=. (EXE檔案相同路徑下)
SandboxPath=%AppData%Thinstall (系統的AppDataThinstall目錄)
SandboxPath=LocalSandboxSubdir1(EXE檔案目錄下的子目錄)
SandboxPath=Z:Sandboxes
OutDir 即打包程式的輸出目錄,不做過多介紹。
SandboxName 即Sandbox的目錄名,最好設定為一個更好的名字 ,預設是軟體名。
RemoveSandboxOnExit :程式結束時是否刪除Sandbox。
RemoveSandboxOnExit=1 (刪除Sandbox)
RemoveSandboxOnExit=0 (不刪除Sandbox)
VirtualDrives :這裡儲存的是快照時系統的磁碟清理,包括類型、序號等資訊,以便運行虛擬程式時建立虛擬磁碟清理,我的經驗是最好是在一個虛擬機器中做快照,且不要有太多分區。
以上就是一些常用的Thinapp封裝參數,當然不止這些,還有很多很多進階的選項,需要的請自己參考說明檔案吧,說明都很詳細,特別是ThinApp Scripts 功能,可以在程式啟動或結束時運行批處理或VBS指令碼,這樣就能實現更多的功能了。需要說明的是VMware ThinApp並不是適合每一個程式,有的封裝後就不能運行,只能是通過ThinApp的升級來修複bug、支援更多的軟體;強烈建議在一個乾淨的系統內容中使用VMware ThinApp。我現在對單檔案軟體不是怎麼感興趣,VMware ThinApp也用的少多了,不過還是希望能與大家多交流交流。
注:更多精彩教程請關注三聯電腦教程欄目