綠色軟件,或稱可攜式軟件(英文稱為Portable Application、Portable Software或Green Software),指一類小型軟件,多數(shù)為免費軟件,最大特點是軟件無需安裝便可使用,可存放于閃存中(因此稱為可攜式軟體),移除后也不會將任何紀錄(注冊表消息等)留在本機計算機上。通俗點講綠色軟件就是指不用安裝,下載直接可以使用的軟件。綠色軟件不會在注冊表中留下注冊表鍵值,所以相對一般的軟件來說,綠色軟件對系統(tǒng)的影響幾乎沒有,所以是很好的一種軟件類型。
軟件特征
綠色版軟件有如下嚴格特征(漢化綠色版就是已漢化的綠色軟件):
1 不對注冊表進行任何操作。
2 不對系統(tǒng)敏感區(qū)進行操作,一般包括系統(tǒng)啟動區(qū)根目錄、安裝目錄(Windows目錄)、程序目錄(ProgramFiles)、帳戶專用目錄。
3 不向自身所在目錄外的目錄進行任何寫操作。
4 因為程序運行本身不對除本身所在目錄外的任何文件產(chǎn)生任何影響,所以,根本不存在安裝和卸載問題。
5 程序的刪除,只要把程序所在目錄和對應(yīng)的快捷方式刪除就完成卸載過程(如果你手動在桌面或其它位置設(shè)置了快捷方式),只要這樣做,程序就完全干凈地從你的電腦里刪去,不留任何垃圾。
6 不需要安裝,隨意拷貝、復(fù)制就可以用(重裝操作系統(tǒng)也可以)。
基本分類
綠色軟件分為 狹義綠色和 廣義綠色:
狹義的綠色可以叫做純綠色軟件,就是指這個軟件對現(xiàn)有的操作系統(tǒng)部分沒有任何改變,除了軟件現(xiàn)在安裝的目錄,應(yīng)該不往任何地方寫東西,運行結(jié)束后會撤銷對系統(tǒng)的改變(例如運行時加載驅(qū)動程序,退出時卸載該驅(qū)動程序,所操作的INI文件在自己的程序目錄中),刪除的時候,直接刪除所在的目錄就可以了,就類似于以前的大多數(shù)DOS程序。
廣義的綠色可以叫作偽綠色軟件,就是指不需要專門的安裝程序,對系統(tǒng)的改變比較少,手工也可以方便的完成這些改變,比如拷貝幾個動態(tài)庫,或者導(dǎo)入注冊表,這里的關(guān)鍵是手工可以方便的完成這些改變,或者可以借助于批處理等等腳本完成。
為什么要分為兩類?
雖然狹義的綠色軟件最為理想,但是完全符合這種定義的軟件非常罕見,而相當多的軟件可以劃分到廣義的綠色這個類別,這樣包括了廣義的綠色軟件的概念后使得綠色軟件這個概念更有意義。
那么不符合綠色軟件要求的有哪些呢?
主要是指那些和操作系統(tǒng)聯(lián)系和集成非常緊密的軟件,這些軟件不適合制成綠色軟件,最好還是用原來的安裝程序來安裝。如IE6,替換了系統(tǒng)中的許多動態(tài)庫,手工完成這個過程很困難,也不太安全。又比如大多數(shù)殺毒軟件,如果 必須實時監(jiān)控系統(tǒng)的底層運作,對系統(tǒng)的修改比較大,就不適合做成綠色軟件。還有微軟的Office系列軟件,和系統(tǒng)集成的也比較緊密。但是廣義的這個標準比較靈活,如果有人搞清楚了Office系列軟件的安裝制作過程,也有可能制作出廣義的綠色的Office系列。
綠化方法
“綠化”方法,需要根據(jù)經(jīng)驗選擇不同的“綠化”方法,也可能需要不斷嘗試不同的方法,直到成功為止。按照先易后難的次序,具體的方法包括:
虛擬化
所謂虛擬化,就是通過把應(yīng)用程序安裝到一些輕量級的虛擬系統(tǒng),這些虛擬系統(tǒng)本身非常輕量體積不到6M,但是卻可以和真實Windows一樣,本身支持獨立安裝運行軟件,保存數(shù)據(jù),擁有自己的獨立桌面。虛擬系統(tǒng)實現(xiàn)了操作系統(tǒng)與應(yīng)用程序分離的目標,安裝到虛擬系統(tǒng)之中的任何應(yīng)用程序都可以在不同的Windows操作系統(tǒng)之間靈活遷移。因此我們可以用它來制作綠色軟件,特別是一些常規(guī)方法無法制作的軟件,用虛擬化的方式會更加容易實現(xiàn)。
解壓縮
這是最簡單的一種方法,就是指嘗試能不能直接解開軟件的壓縮包。用WinZip和WinRAR試一試,看看能不能直接打開壓縮的安裝文件,如果不能打開,那么就換別的方法。如果可以,那么恭喜,這個軟件多半是屬于綠色安裝的軟件(有個別例外,如E mEditor),把壓縮包中的文件直接解壓到目標路徑,然后測試軟件的功能是否正常,如果功能正常,那么“綠化”就成功了,如果使用不正常,那么就換別的方法。這一類軟件的特點是安裝程序的工作完全可以由軟件自身來完成。
安裝然后卸載
也是比較容易的方法,完全是體力勞動,就是指直接安裝這個軟件,然后把程序復(fù)制出來,最后卸載安裝程序。如果這個軟件的安裝程序的作用僅僅是復(fù)制文件和生成快捷鍵等工作,那么就屬于綠色安裝,可以使用這個方法。
反編譯安裝程序
這個方法需要動腦筋,就是根據(jù)安裝程序所用的制作工具,選擇相應(yīng)的反編譯程序,然后閱讀反編譯出的安裝腳本,制作綠色軟件。目前的軟件大多使用專門的安裝工具制作,如InstallShield,Wise,Inno Setup,Windows Installer,NSIS(Nullsoft),Installer VISE,其中Windows Installer格式的安裝文件(就是MSI,MST為后綴的文件),可以通過微軟的免費工具Orca打開查看,installshield格式的安裝文件也有很多免費的工具可以解壓縮和查看腳本。當然專門的安裝工具很多,有許多安裝程序沒有相應(yīng)的反編 譯程序,這種時候,就無法使用這個方法了。
制作方法
綠色軟件的制作簡稱軟件的“綠化”,綠色軟件的制作實際上就是我們自己完成安裝程序的工作。沒有什么固定的方法,基本上是猜測加上試驗,不同類別的綠色軟件分別有不同的制作策略。
拿到一個新的軟件,想要制成綠色軟件的話,一般遵循如下步驟:
判斷
就是指猜測這個軟件能不能制成綠色軟件,從功能,從你對它的了解,如果你覺得這個軟件和系統(tǒng)的關(guān)系非常緊密,就不要繼續(xù)下去了,還是用原始的安裝程序最保險最方便,這樣的例子有directx9 ,IE6,Norton的反病毒軟件等等。這樣的判斷可以節(jié)省你的時間,當然你可以忽略這一步,嘗試制作綠色軟件,那么就轉(zhuǎn)到第2步。
綠化
對于不同的軟件有不同的方法,沒有一定的規(guī)則,但是總的來說,就是理解軟件的安裝過程,轉(zhuǎn)換為綠色安裝,在這個過程中,可能需要嘗試多個方法,也可能最后由于軟件的復(fù)雜性或者某些特性,導(dǎo)致無法綠化。要有失敗的思想準備,具體的綠化方法隨后講 述。
測試
綠化后的測試最好到一個全新安裝的操作系統(tǒng)中測試,而且如果你要在多個操作系統(tǒng)中使用這個軟件的話,還要在其他的操作系統(tǒng)中測試,有的軟件的文件隨著操作系統(tǒng)的不同而不同,這個時候你需要在不同的操作系統(tǒng)中進行“綠化”過程,最后綜合為一個完整 的適應(yīng)多個操作平臺的綠色軟件。
反安裝程序
現(xiàn)在的軟件安裝完成后絕大多數(shù)都帶有卸載方法。卸載是安裝的逆過程,如果知道怎么卸載,那么也可以推測出如何安裝。由專門的安裝工具制作的反安裝程序,一般都是根據(jù)某一個文件中的信息來卸載的,可以用一個純文本的編輯器打開這 個文件。個別情況下這個文件完全不包含可讀信息,就只好換用其他方法了。具體過程就是先采用方法2,然后理解反安裝過程,最后根據(jù)反安裝的信息制作綠色軟件。
比較系統(tǒng)快照
當前面的方法都失敗的時候,可以試一試這個方法。具體思路就是首先在安裝軟件之前,把系統(tǒng)的狀態(tài)記錄下來,主要包括注冊表和系統(tǒng)目錄的所有的文件狀態(tài)。然后就是安裝軟件。安裝完成后,再一次記錄系統(tǒng)狀態(tài)。最后就是比較前后兩個系統(tǒng)狀態(tài)的不同,而得知安裝程序所做的工作。這個工作一般由專門的軟件完成,如免費工具Regshot,免費工具WinInstall LE(在Windows 2000 Sever 光盤的目錄VALUEADDRDPARTY\MGMT\WINSTLE\中)。在多數(shù)時候,僅僅需要對比安裝前后注冊表的不同,這時候還有大量的注冊表工具可以選用。在得出系統(tǒng)差異后,把差異分解為兩個部分:文件部分和注冊表部分。文件部分指的是向系 統(tǒng)目錄拷貝的文件,以及作為COM組件注冊的文件,還有與這些文件相關(guān)的注冊表部分。注冊表部分單單指其余的注冊表的變化。對于文件部分,可以進一步區(qū)分出必須要往系統(tǒng)目錄拷貝的文件(這種情況是少數(shù))和可以放在軟件的安裝目錄的文件。對于注冊表部分,區(qū) 分出由這個軟件的安裝程序本身所作出的注冊表操作和注冊COM組件時候的注冊表操作,拋棄其他程序(如File ExplorerExplorer)的操作。根據(jù)所有這些,寫一個拷貝文件,注冊COM組件和導(dǎo)入注冊表的批處理文件,就可以完成綠色軟件的制作了。當注冊表文 件中含有路徑信息的時候,可以手工修改注冊表文件或者把注冊表文件轉(zhuǎn)化為INF文件從而實現(xiàn)全自動的路徑處理。
注冊表綠化
這個方法是上面的方法5的簡化版,現(xiàn)在軟件的配置大多寫在注冊表中的“HKEY_LOCLAL_MACHINE\SOFTWARE\軟件公司名字”和“HKEY_CURRENT_USER\SOFTWARE\軟件 公司名字”這2個鍵下面,直接對把這2個注冊表鍵導(dǎo)出到REG文件中。自注冊的COM組件都需要導(dǎo)出如下4個函數(shù):DllCanUnloadNow,DllGetClassObject,DllRegisterServer,DllUnregisterServer,可以用vc自帶的depend.exe找出哪一個動態(tài)鏈接庫是自注冊的COM組件。最后寫一個批處理文件用regsvr32.exe注冊COM組件和用regedit.exe導(dǎo)入注冊表。
通過上面分析安裝程序的動作,把安裝程序的工作分解為復(fù)制文件,注冊COM組件,安裝服務(wù)驅(qū)動,注冊表配置等幾個部分,雖然注冊表配置可以覆蓋注冊COM組件,安裝服務(wù)驅(qū)動等操作步驟。但是把這些明顯分割出來有助于制作綠色安裝的軟件。對于需要更復(fù)雜的步 驟來安裝的軟件,還是使用原來的安裝程序比較保險。
參考資料 >