軟體特徵
綠色版軟體有如下嚴格特徵(漢化綠色版就是已漢化的綠色軟體):
1 不對註冊表進行任何操作。
2 不對系統敏感區進行操作,一般包括系統啟動區根目錄、安裝目錄(Windows目錄)、程式目錄(ProgramFiles)、帳戶專用目錄。
3 不向自身所在目錄外的目錄進行任何寫操作。
4 因為程式運行本身不對除本身所在目錄外的任何檔案產生任何影響,所以,根本不存在安裝和卸載問題。
5 程式的刪除,只要把程式所在目錄和對應的捷徑刪除就完成卸載過程(如果你手動在桌面或其它位置設定了捷徑),只要這樣做,程式就完全乾淨地從你的電腦里刪去,不留任何垃圾。
6 不需要安裝,隨意拷貝、複製就可以用(重裝作業系統也可以)。
基本分類
綠色軟體分為 狹義綠色和 廣義綠色:
狹義的綠色可以叫做純綠色軟體,就是指這個軟體對現有的作業系統部分沒有任何改變,除了軟體現在安裝的目錄,應該不往任何地方寫東西,刪除的時候,直接刪除所在的目錄就可以了,就類似於以前的大多數DOS程式。
廣義的綠色可以叫作偽綠色軟體,就是指不需要專門的安裝程式,對系統的改變比較少,手工也可以方便的完成這些改變,比如拷貝幾個動態庫,或者導入註冊表,這裡的關鍵是手工可以方便的完成這些改變,或者可以藉助於批處理等等腳本完成。
為什麼要分為兩類?
雖然狹義的綠色軟體最為理想,但是完全符合這種定義的軟體非常罕見,而相當多的軟體可以劃分到廣義的綠色這個類別,這樣包括了廣義的綠色軟體的概念後使得綠色軟體這個概念更有意義。
那么不符合綠色軟體要求的有哪些呢?
主要是指那些和作業系統聯繫和集成非常緊密的軟體,這些軟體不適合製成綠色軟體,最好還是用原來的安裝程式來安裝。如IE6,替換了系統中的許多動態庫,手工完成這個過程很困難,也不太安全。又比如大多數防毒軟體,如果 必須實時監控系統的底層運作,對系統的修改比較大,就不適合做成綠色軟體。還有微軟公司的Office系列軟體,和系統集成的也比較緊密。但是廣義的這個標準比較靈活,如果有人搞清楚了Office系列軟體的安裝製作過程,也有可能製作出廣義的綠色的Of fice系列。
綠化方法
“綠化”方法,需要根據經驗選擇不同的“綠化”方法,也可能需要不斷嘗試不同的方法,直到成功為止。按照先易後難的次序,具體的方法包括:
虛擬化
所謂虛擬化,就是通過把應用程式安裝到一些輕量級的虛擬系統,這些虛擬系統本身非常輕量體積不到6M,但是卻可以和真實Windows一樣,本身支持獨立安裝運行軟體,保存數據,擁有自己的獨立桌面。虛擬系統實現了作業系統與應用程式分離的目標,安裝到虛擬系統之中的任何應用程式都可以在不同的Windows作業系統之間靈活遷移。因此我們可以用它來製作綠色軟體,特別是一些常規方法無法製作的軟體,用虛擬化的方式會更加容易實現。
解壓縮
這是最簡單的一種方法,就是指嘗試能不能直接解開軟體的壓縮檔。用Winzip和Winrar試一試,看看能不能直接打開壓縮的安裝檔案,如果不能打開,那么就換別的方法。如果可以,那么恭喜,這個軟體多半是屬於綠色安裝的軟體(有個別例外,如E mEditor),把壓縮檔中的檔案直接解壓到目標路徑,然後測試軟體的功能是否正常,如果功能正常,那么“綠化”就成功了,如果使用不正常,那么就換別的方法。這一類軟體的特點是安裝程式的工作完全可以由軟體自身來完成。
安裝然後卸載
也是比較容易的方法,完全是體力勞動,就是指直接安裝這個軟體,然後把程式複製出來,最後卸載安裝程式。如果這個軟體的安裝程式的作用僅僅是複製檔案和生成快捷鍵等工作,那么就屬於綠色安裝,可以使用這個方法。
反編譯安裝程式
這個方法需要動腦筋,就是根據安裝程式所用的製作工具,選擇相應的反編譯程式,然後閱讀反編譯出的安裝腳本,製作綠色軟體。目前的軟體大多使用專門的安裝工具製作,如InstallShield,Wise,Inno Setup,Windows Installer,NSIS(Nullsoft),Installer VISE,其中Windows Installer格式的安裝檔案(就是MSI,MST為後綴的檔案),可以通過微軟的免費工具Orca打開查看,InstallShield格式的安裝檔案也有很多免費的工具可以解壓縮和查看腳本。當然專門的安裝工具很多,有許多安裝程式沒有相應的反編 譯程式,這種時候,就無法使用這個方法了。
反安裝程式
現在的軟體安裝完成後絕大多數都帶有卸載方法。卸載是安裝的逆過程,如果知道怎么卸載,那么也可以推測出如何安裝。由專門的安裝工具製作的反安裝程式,一般都是根據某一個檔案中的信息來卸載的,可以用一個純文本的編輯器打開這 個檔案。個別情況下這個檔案完全不包含可讀信息,就只好換用其他方法了。具體過程就是先採用方法2,然後理解反安裝過程,最後根據反安裝的信息製作綠色軟體。
比較系統快照
當前面的方法都失敗的時候,可以試一試這個方法。具體思路就是首先在安裝軟體之前,把系統的狀態記錄下來,主要包括註冊表和系統目錄的所有的檔案狀態。然後就是安裝軟體。安裝完成後,再一次記錄系統狀態。最後就是比較前後兩個系統狀態的不同 ,而得知安裝程式所做的工作。這個工作一般由專門的軟體完成,如免費工具Regshot,免費工具WinInstall LE(在Windows 2000 Sever 光碟的目錄VALUEADDRDPARTY\MGMT\WINSTLE\中)。在多數時候,僅僅需要對比安裝前後註冊表的不同,這時候還有大量的註冊表工具可以選用。在得出系統差異後,把差異分解為兩個部分:檔案部分和註冊表部分。檔案部分指的是向系 統目錄拷貝的檔案,以及作為COM組件註冊的檔案,還有與這些檔案相關的註冊表部分。註冊表部分單單指其餘的註冊表的變化。對於檔案部分,可以進一步區分出必須要往系統目錄拷貝的檔案(這種情況是少數)和可以放在軟體的安裝目錄的檔案。對於註冊表部分,區 分出由這個軟體的安裝程式本身所作出的註冊表操作和註冊COM組件時候的註冊表操作,拋棄其他程式(如資源管理器Explorer)的操作。根據所有這些,寫一個拷貝檔案,註冊COM組件和導入註冊表的批處理檔案,就可以完成綠色軟體的製作了。當註冊表文 件中含有路徑信息的時候,可以手工修改註冊表檔案或者把註冊表檔案轉化為INF檔案從而實現全自動的路徑處理。
註冊表綠化
這個方法是上面的方法5的簡化版,現在軟體的配置大多寫在註冊表中的“HKEY_LOCLAL_MACHINE\SOFTWARE\軟體公司名字”和“HKEY_CURRENT_USER\SOFTWARE\軟體 公司名字”這2個鍵下面,直接對把這2個註冊表鍵導出到REG檔案中。自註冊的COM組件都需要導出如下4個函式:DllCanUnloadNow,DllGetClassObject,DllRegisterServer, DllUnregisterServer,可以用vc自帶的depend.exe找出哪一個動態程式庫是自註冊的COM組件。最後寫一個批處理檔案用regsvr32.exe註冊COM組件和用regedit.exe導入註冊表。
通過上面分析安裝程式的動作,把安裝程式的工作分解為複製檔案,註冊COM組件,安裝服務驅動,註冊表配置等幾個部分,雖然註冊表配置可以復蓋註冊COM組件,安裝服務驅動等操作步驟,但是把這些明顯分割出來有助於製作綠色安裝的軟體。對於需要更複雜的步 驟來安裝的軟體,還是使用原來的安裝程式比較保險。