綠色軟件是怎麼製作的?(轉)

 下面講一下綠色軟件的製作,簡稱軟件的“綠化”,綠色軟件的製作實際上就是我們自己完成安裝程序的工作。沒有什麼固定的方法,基本上是猜測加上試驗,不同類別的綠色軟件分別有不同的製作策略。

拿到一個新的軟件,想要製成綠色軟件的話,一般遵循如下步驟:
1 判斷。就是指猜測這個軟件能不能製成綠色軟件,從功能,從你對它的瞭解,如果你覺得這個軟件和系統的關係非常緊密,就不要繼續下去了,還是用原始的安裝程 序最保險最方便,這樣的例子有directx9 ,IE6,Norton的反病毒軟件等等。這樣的判斷可以節省你的時間,當然你可以忽略這一步,嘗試製作綠色軟件,那麼就轉到第2步。
2“綠化”。對於不同的軟件有不同的方法,沒有一定的規則,但是總的來說,就是理解軟件的安裝過程,轉換爲綠色安裝,在這個過程中,可能需要嘗試多個方法,也可能最後由於軟件的複雜性或者某些特性,導致無法綠化。要有失敗的思想準備,具體的綠化方法隨後講述。
3 測試。”綠化“後的測試最好到你個全新安裝的操作系統中測試,而且如果你要在多個操作系統中使用這個軟件的話,還要在其他的操作系統中測試,有的軟件的文 件隨着操作系統的不同而不同,這個時候你需要在不同的操作系統中進行”綠化“過程,最後綜合爲一個完整的適應多個操作平臺的綠色軟件。

“綠化”方法,需要根據經驗選擇不同的“綠化”方法,也可能需要不斷嘗試不同的方法,直到成功爲止。按照先易後難的次序,具體的方法包括:
1 解壓縮。這是最簡單的一種方法,就是指嘗試能不能直接解開軟件的壓縮包。用Winzip和Winrar試一試,看看能不能直接打開壓縮的安裝文件,如果不 能打開,那麼就換別的方法。如果可以,那麼恭喜,這個軟件多半是屬於綠色安裝的軟件(有個別例外,如EmEditor),把壓縮包中的文件直接解壓到目標 路徑,然後測試軟件的功能是否正常,如果功能正常,那麼“綠化”就成功了,如果使用不正常,那麼就換別的方法。這一類軟件的特點是安裝程序的工作完全可以 由軟件自身來完成。
2 安裝然後卸載。也是比較容易的方法,完全是體力勞動,就是指直接安裝這個軟件,然後把程序複製出來,最後卸載安裝程序。如果這個軟件的安裝程序的作用僅僅 是複製文件和生成快捷鍵等工作,那麼就屬於綠色安裝,可以使用這個方法。最後測試軟件的功能是否正常,如果功能正常,那麼“綠化”就成功了,如果使用不正 常,那麼就換別的方法。
3 反編譯安裝程序。這個方法需要動腦筋,就是根據安裝程序所用的製作工具,選擇相應的反編譯程序,然後閱讀反編譯出的安裝腳本,製作綠色軟件。目前的軟件大 多使用專門的安裝工具製作,如InstallShield,Wise,Inno Setup,Windows Installer,NSIS(Nullsoft),Installer VISE,其中Windows Installer格式的安裝文件(就是MSI,MST爲後綴的文件),可以通過微軟的免費工具Orca打開查看,InstallShield格式的安裝 文件也有很多免費的工具可以解壓縮和查看腳本。當然專門的安裝工具很多,有許多安裝程序沒有相應的反編譯程序,這種時候,就無法使用這個方法了。
4 觀察反安裝程序和log文件。現在的軟件安裝完成後絕大多數都帶有卸載方法。卸載是安裝的逆過程,如果知道怎麼卸載,那麼也可以推測出如何安裝。由專門的 安裝工具製作的反安裝程序,一般都是根據某一個文件中的信息來卸載的,可以用一個純文本的編輯器打開這個文件。個別情況下這個文件完全不包含可讀信息,就 只好換用其他方法了。具體過程就是先採用方法2,然後理解反安裝過程,最後根據反安裝的信息製作綠色軟件。
5 比較系統快照。當前面的方法都失敗的時候,可以試一試這個方法。具體思路就是首先在安裝軟件之前,把系統的狀態記錄下來,主要包括註冊表和系統目錄的所有 的文件狀態。然後就是安裝軟件。安裝完成後,再一次記錄系統狀態。最後就是比較前後兩個系統狀態的不同,而得知安裝程序所做的工作。這個工作一般由專門的 軟件完成,如免費工具Regshot,免費工具inctrl5(http://www.pcmag.com/article2/0,4149,9882,00.asp), 微軟公司的sysdiff工具(可以從Windows2000的資源工具箱中得到),或者WinInstall LE(在Windows 2000 Sever 光盤的目錄VALUEADD/3RDPARTY/MGMT/WINSTLE/中)。在多數時候,僅僅需要對比安裝前後註冊表的不同,這時候還有大量的註冊 表工具可以選用。在得出系統差異後,把差異分解爲兩個部分:文件部分和註冊表部分。文件部分指的是向系統目錄拷貝的文件,以及作爲COM組件註冊的文件, 還有與這些文件相關的註冊表部分。註冊表部分單單指其餘的註冊表的變化。對於文件部分,可以進一步區分出必須要往系統目錄拷貝的文件(這種情況是少數)和 可以放在軟件的安裝目錄的文件。對於註冊表部分,區分出由這個軟件的安裝程序本身所作出的註冊表操作和註冊COM組件時候的註冊表操作,拋棄其他程序(如 資源管理器Explorer)的操作。根據所有這些,寫一個拷貝文件,註冊COM組件和導入註冊表的批處理文件,就可以完成綠色軟件的製作了。當註冊表文 件中含有路徑信息的時候,可以手工修改註冊表文件或者把註冊表文件轉化爲INF文件從而實現全自動的路徑處理。
6 直接導出註冊表,尋找自注冊的COM組件。這個方法是上面的方法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組件,安裝服務驅動等操作步驟,但是把這些明顯分割出來有助於製作綠色安裝的軟件。對於需要更復雜的步驟來安裝的軟件,還是使用原來的安裝程 序比較保險。 回答者:螞蟻騎大象

綠色軟件製作原理

綠色軟件的定義和分類

安裝完操作系統後,我們一般需要安裝一些常用的軟件,但是隨着我們常用軟件的增多,這個安裝過程顯得越來越令人厭煩:運行setup,然後是選擇目標路 徑,不斷的重複這個過程。後來我見到有人制作所謂的綠色軟件,不需要安裝,感覺很方便。當時很好奇,想知道怎麼做的,有沒有什麼方便的工具等等,可是在網 上沒有找到什麼相關的知識,隨着自己的一步步摸索,我逐漸積累了一些經驗和比較有效的方法,在這裏提供給大家。

首先要先弄清楚何謂綠色軟件?其定義是什麼?我收集了一些網友的討論和想法:
A 說,不需要安裝 同時 不向註冊表寫入任何東西
B 說,應該還包括不向系統文件夾拷貝文件,我的理解就是:安裝這個軟件對現有的操作系統沒有任何改變,改變包括寫註冊表之類的。
C 說,除了你現在安裝的目錄,應該不往任何地方寫東西(比如log)。
D 說,免安裝,並且 不往程序所在目錄以外的任何地方產生垃圾文件,還有 不寫註冊表
E 說,綜上加一條,可以放在移動存儲器上在任一電腦上使用且效果相同。
F 說,好像不寫註冊表,直接copy來就可以用得就算吧。
G 說,重新安裝系統的時候,僅需導入註冊表,不需重新安裝,就可以認爲是綠色軟件。
H 說,其實只要不寫註冊表、不往系統文件夾寫文件,哪怕需要.ini文件也在軟件自己的目錄裏就行,那麼就可算作綠色軟件,特徵是能夠任意copy到別的文 件夾照樣能用或重裝系統後直接能用,沒有其它變化。所以有小部分“安裝”的軟件其實也符合綠色軟件,因爲它 的安裝只是解壓縮建立文件夾而已。
I 說,基本同意,但不寫註冊表的幾乎是不可能,你只要運行過那個軟件,打開註冊表編輯器HKLM和HKLU下面software看看,幾乎都會留下鍵值,其實這樣也應該叫做綠色的吧。

綜合上面的意見,可以總結出綠色軟件的優點,就是對操作系統無污染(恐怕這也是綠色這個名字的由來),不需要安裝,方便卸載,便於攜帶,可以拷貝到便攜的U盤上到處運行。

我的意見是,綠色軟件應該分類,分爲狹義的綠色和廣義的綠色:
狹義的綠色可以叫做純綠色軟件,就是指這個軟件對現有的操作系統部分沒有任何改變,除了軟件現在安裝的目錄,應該不往任何地方寫東西,刪除的時候,直接刪除所在的目錄就可以了,就類似於以前的大多數DOS程序。
廣義的綠色就是指不需要專門的安裝程序,對系統的改變比較少,手工也可以方便的完成這些改變,比如拷貝幾個動態庫,或者導入註冊表,這裏的關鍵是手工可以方便的完成這些改變,或者可以藉助於批處理等等腳本完成。
爲什麼要分爲兩類?雖然狹義的綠色軟件最爲理想,但是完全符合這種定義的軟件非常罕見,而相當多的軟件可以劃分到廣義的綠色這個類別,這樣包括了廣義的綠色軟件的概念後使得綠色軟件這個概念更有意義。
那麼不符合綠色軟件要求的有哪些呢?主要是指那些和操作系統聯繫和集成非常緊密的軟件,這些軟件不適合製成綠色軟件,最好還是用原來的安裝程序來安裝。如 IE6,替換了系統中的許多動態庫,手工完成這個過程很困難,也不太安全。又比如大多數殺毒軟件,如果必須實時監控系統的底層運作,對系統的修改比較大, 就不適合做成綠色軟件。還有微軟公司的Office系列軟件,和系統集成的也比較緊密。但是廣義的這個標準比較靈活,如果有人搞清楚了Office系列軟 件的安裝製作過程,也有可能製作出廣義的綠色的Office系列。

爲了充分理解綠色軟件的定義,必須從現代軟件的安裝過程和運行過程兩個方面來討論。
安裝過程:以前在dos下面的時候,就沒有這些所謂綠色軟件的說法,原來程序的安裝基本上都是簡單的複製或者解壓縮,然後配置一下config.sys 和autoexec.bat文件就可以了。隨着windows的發展,應用軟件也越來越大,也越來越複雜,從而有公司專門從事安裝程序的製作,如 InstallShield就是一款比較有名和應用比較廣泛的安裝軟件,現在windwos也有了專門的安裝程序,就是Microsoft Installer。安裝程序的作用是什麼呢?主要是爲了給要安裝的程序提供一個簡單方便的設置環境,而不需要用戶手工完成這個步驟,越是複雜的配置過 程,對系統的修改越多,對安裝程序的依賴性就越高,Windows程序的易學易用的優點和良好的安裝界面是分不開的,安裝軟件的任務就是給應用程序提供一 個初步完好的可以運行的環境,而不需要用戶進行手工配置。
運行過程:應用程序啓動的時候,從註冊表或者配置文件中讀取配置,運行的時候,可以修改配置,但這個修改一般是在安裝軟件所作工作的基礎上進行的,例如不能改變應用程序的安裝位置了。
明白安裝過程和運行過程的區別後,很容易就想到把綠色軟件的使用按照這兩個階段分爲綠色安裝過程和綠色運行過程。綠色安裝是綠色運行的前提,沒有綠色安 裝,也就說不上什麼綠色運行了,綠色軟件首先必須是綠色安裝,我前面提到的不適合綠色軟件標準的基本上都是不能綠色安裝的。
綠色安裝的基本含義,我認爲可以也可以分爲狹義的和廣義的綠色安裝:
1 狹義的綠色安裝就是指直接拷貝或者解壓縮到目標目錄,不需要向系統目錄拷貝也不需要寫入註冊表,這是最理想的情況,或者是安裝程序的作用除了解壓縮外是可 以忽略的,如在開始菜單加入快捷鍵等對系統和軟件的運行沒有太大影響的操作,也就是說安裝過程的作用就是複製文件到目標文件夾。
2 廣義的綠色安裝就是指在狹義的複製的基礎上,必須向系統目錄拷貝一些動態庫,或者要在註冊表中導入必要的設置,或者要進行一些其他的配置,否則的話,應用程序不能運行,而且這個配置工作應該比較簡單,也容易撤銷這些操作對系統的改變。
同樣,綠色運行也可以分爲狹義的和廣義的綠色運行:
1 狹義的綠色運行指的是軟件運行時完全不改變操作系統的文件和配置--很多小程序屬於這個類別,或者運行結束後把撤銷對系統的改變,比如運行的時候加載一個驅動程序,退出時卸載該驅動程序,所操作的INI文件在自己的程序目錄中。
2 廣義的綠色運行指的是可以通過程序本身來改變當前的設置,如改變當前軟件的運行方式,或者與某些文件後綴相關聯,或者在註冊表中留下當前的軟件設置,也就是說對系統的註冊表有永久的改變,但是這些改變都是應用程序自己完成的,不需要藉助其他程序或者用手工完成。
綜合綠色安裝和綠色運行,可以把綠色軟件細分爲:
1 狹義的綠色安裝,同時是狹義的綠色運行的軟件,對操作系統沒有任何改變。
2 狹義的綠色安裝,廣義的綠色運行的軟件,軟件的配置工作由軟件本身來完成,不是通過安裝程序。
3 廣義的綠色安裝,狹義的綠色運行,軟件的配置工作由安裝程序來完成,軟件本身不能對配置修改,同時如果沒有配置工作,軟件無法正常運行。
4 廣義的綠色安裝,廣義的綠色運行,最複雜的一種綠色軟件,軟件的配置工作由安裝程序來完成,但是軟件本身可以對配置 修改,同時如果沒有配置工作,軟件無法正常運行。

只有第一個類別屬於我說的狹義的綠色軟件,其他3類都屬於廣義的綠色軟件的範疇。

綠色軟件的“綠化”方法

下面講一下綠色軟件的製作,簡稱軟件的“綠化”,綠色軟件的製作實際上就是我們自己完成安裝程序的工作。沒有什麼固定的方法,基本上是猜測加上試驗,不同類別的綠色軟件分別有不同的製作策略。
拿到一個新的軟件,想要製成綠色軟件的話,我一般遵循如下步驟:
1 判斷。就是指猜測這個軟件能不能製成綠色軟件,從功能,從你對它的瞭解,如果你覺得這個軟件和系統的關係非常緊密,就不要繼續下去了,還是用原始的安裝程 序最保險最方便,這樣的例子有directx9 ,IE6,Norton的反病毒軟件等等。這樣的判斷可以節省你的時間,當然你可以忽略這一步,嘗試製作綠色軟件,那麼就轉到第2步。
2“綠化”。對於不同的軟件有不同的方法,沒有一定的規則,但是總的來說,就是理解軟件的安裝過程,轉換爲綠色安裝,在這個過程中,可能需要嘗試多個方法,也可能最後由於軟件的複雜性或者某些特性,導致無法綠化。要有失敗的思想準備,具體的綠化方法隨後講述。
3 測試。”綠化“後的測試最好到你個全新安裝的操作系統中測試,而且如果你要在多個操作系統中使用這個軟件的話,還要在其他的操作系統中測試,有的軟件的文 件隨着操作系統的不同而不同,這個時候你需要在不同的操作系統中進行”綠化“過程,最後綜合爲一個完整的適應多個操作平臺的綠色軟件。

“綠化”方法,需要根據經驗選擇不同的“綠化”方法,也可能需要不斷嘗試不同的方法,直到成功爲止。按照先易後難的次序,具體的方法包括:
1 解壓縮。這是最簡單的一種方法,就是指嘗試能不能直接解開軟件的壓縮包。用Winzip和Winrar試一試,看看能不能直接打開壓縮的安裝文件,如果不 能打開,那麼就換別的方法。如果可以,那麼恭喜,這個軟件多半是屬於綠色安裝的軟件(有個別例外,如EmEditor),把壓縮包中的文件直接解壓到目標 路徑,然後測試軟件的功能是否正常,如果功能正常,那麼“綠化”就成功了,如果使用不正常,那麼就換別的方法。這一類軟件的特點是安裝程序的工作完全可以 由軟件自身來完成。
2 安裝然後卸載。也是比較容易的方法,完全是體力勞動,就是指直接安裝這個軟件,然後把程序複製出來,最後卸載安裝程序。如果這個軟件的安裝程序的作用僅僅 是複製文件和生成快捷鍵等工作,那麼就屬於綠色安裝,可以使用這個方法。最後測試軟件的功能是否正常,如果功能正常,那麼“綠化”就成功了,如果使用不正 常,那麼就換別的方法。
3 反編譯安裝程序。這個方法需要動腦筋,就是根據安裝程序所用的製作工具,選擇相應的反編譯程序,然後閱讀反編譯出的安裝腳本,製作綠色軟件。目前的軟件大 多使用專門的安裝工具製作,如InstallShield,Wise,Inno Setup,Windows Installer,NSIS(Nullsoft),Installer VISE,其中Windows Installer格式的安裝文件(就是MSI,MST爲後綴的文件),可以通過微軟的免費工具Orca打開查看,InstallShield格式的安裝 文件也有很多免費的工具可以解壓縮和查看腳本。當然專門的安裝工具很多,有許多安裝程序沒有相應的反編譯程序,這種時候,就無法使用這個方法了。
4 觀察反安裝程序和log文件。現在的軟件安裝完成後絕大多數都帶有卸載方法。卸載是安裝的逆過程,如果知道怎麼卸載,那麼也可以推測出如何安裝。由專門的 安裝工具製作的反安裝程序,一般都是根據某一個文件中的信息來卸載的,可以用一個純文本的編輯器打開這個文件。個別情況下這個文件完全不包含可讀信息,就 只好換用其他方法了。具體過程就是先採用方法2,然後理解反安裝過程,最後根據反安裝的信息製作綠色軟件。
5 比較系統快照。當前面的方法都失敗的時候,可以試一試這個方法。具體思路就是首先在安裝軟件之前,把系統的狀態記錄下來,主要包括註冊表和系統目錄的所有 的文件狀態。然後就是安裝軟件。安裝完成後,再一次記錄系統狀態。最後就是比較前後兩個系統狀態的不同,而得知安裝程序所做的工作。這個工作一般由專門的 軟件完成,如免費工具Regshot,免費工具inctrl5(http: //www.pcmag.com/article2/0,4149,9882,00.asp),微軟公司的sysdiff工具(可以從 Windows2000的資源工具箱中得到),或者WinInstall LE(在Windows 2000 Sever 光盤的目錄VALUEADD/3RDPARTY/MGMT/WINSTLE/中)。在多數時候,僅僅需要對比安裝前後註冊表的不同,這時候還有大量的註冊 表工具可以選用。在得出系統差異後,把差異分解爲兩個部分:文件部分和註冊表部分。文件部分指的是向系統目錄拷貝的文件,以及作爲COM組件註冊的文件, 還有與這些文件相關的註冊表部分。註冊表部分單單指其餘的註冊表的變化。對於文件部分,可以進一步區分出必須要往系統目錄拷貝的文件(這種情況是少數)和 可以放在軟件的安裝目錄的文件。對於註冊表部分,區分出由這個軟件的安裝程序本身所作出的註冊表操作和註冊COM組件時候的註冊表操作,拋棄其他程序(如 資源管理器Explorer)的操作。根據所有這些,寫一個拷貝文件,註冊COM組件和導入註冊表的批處理文件,就可以完成綠色軟件的製作了。當註冊表文 件中含有路徑信息的時候,可以手工修改註冊表文件或者把註冊表文件轉化爲INF文件從而實現全自動的路徑處理。
6 直接導出註冊表,尋找自注冊的COM組件。這個方法是上面的方法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 組件,安裝服務驅動等操作步驟,但是把這些明顯分割出來有助於製作綠色安裝的軟件。對於需要更復雜的步驟來安裝的軟件,還是使用原來的安裝程序比較保險。

對於每個方法,下面我會給出具體的例子,有些時候,需要幾個方法聯合使用,無論使用什麼方法,都是模擬原來的軟件作者的安裝過程,所以原作者最容易給出該軟件的綠色版本。



具體事例

winrar3.30 和Winzip9.0,採用方法1,解壓縮。這個方法非常簡單,從天空軟件站下載Winzip90.exe和winrar330sc.exe,在一個安裝 了Winrar的系統上,用鼠標右鍵選擇下載的文件,運行右鍵菜單中的用Winrar打開的命令,然後把文件解壓到我們的目標路徑,如E:/tools目 錄,就可以了。然後分別對Winzip9和Winrar進行設置就可以了。運行winzip9目錄中的Winzip32.exe,進行winzip的設 置。Winrar也是一樣,運行Winrar.exe,打開菜單選項-〉設置,彈出一個對話框,選擇標籤--集成,如圖 WinrarSetting.png,逐項對Winrar設置。當拷貝到U盤而到新的機器上運行時,需要重複這些設置過程。
這一類軟件的特點是安裝程序的工作完全可以由軟件自身來完成,從而完全拋開安裝程序,或者說安裝程序的工作也就是解壓縮。類似的軟件還有一些,最簡單的測試辦法就是看看Winrar能否直接打開壓縮的安裝程序。也可以採用方法2,過程基本上和方法1一樣。
方法2就不具體說明了,僅僅指出有許多程序屬於這個類別,如Myie2,GreenBrowser,qq,BPFTP Server,IDA_Pro_Standard_4.5.1.770,FinalData,EASYRECOVERY 6.03,騰遜公司的TM等等。
flashget是大家用得比較多的一個軟件,可以多線程下載並且下載管理的功能也很方便,從天空軟件站sky.com下載flashget1.60a國 際版,運行一下,如圖flashget_wise.PNG,然後取消安裝。從圖上可以看出flashget1.60a國際版是使用Wise製作的安裝程 序,從網上下載wungui程序,非常容易的把安裝程序解壓縮到一個目錄中,如圖flashget160a.PNG,觀察Maindir目錄,其中有兩個 DLL文件Jccatch.dll和fgiebar.dll,進一步察看這兩個動態庫文件的導出函數,可以知道這兩個DLL文件都是自注冊的COM組件, 寫一個批處理文件install.bat來註冊這兩個DLL:
REGSVR32 JCCATCH.DLL /s
REGSVR32 fgiebar.dll /s
經過測試,功能正常,並且可以從瀏覽器IE中用鼠標的右鍵菜單激活flashget,

功能完全,下面考慮卸載過程。
運行Regedit.exe,發現flashget在註冊表中的路徑是[HKEY_CURRENT_USER/Software/JetCar/JetCar],寫一個註冊表文件unflashget.reg刪除這個路徑,如下:
REGEDIT4
; flashget
[-HKEY_CURRENT_USER/Software/JetCar/JetCar]
同時寫一個批處理文件uninstall.bat來卸載這兩個DLL文件並導入unflashget.reg:
Regedit unflashget.reg /s
REGSVR32 JCCATCH.DLL /s /U
REGSVR32 fgiebar.dll /s /U

隨後就是刪除一些我們用不到的文件,比如language目錄的絕大多數歐洲的語言文件,這時候這個綠色版本就做好了。把製作好的綠色的flashget 拷貝到U盤上,需要用的時候,直接執行裏面的install.bat文件就可以了(注意,要在flashget的目錄運行批處理文件),不需要任何文件拷 貝。
我看到有人提到用優化大師提取falshget的註冊表,然後直接導入註冊表來製作綠色的flashget,這樣做是不行的,從我前面的步驟來看,註冊2 個DLL文件必然在註冊表中引入了絕對路徑,那麼如果直接提取註冊表的話,就必須根據當前的路徑來修改註冊表中的路徑,否則的話製作的綠色版的 flashget只能在固定的目錄運行。在製作flashget綠色版的時候,我同時使用了方法3和方法6,使用方法3的目的就是避免安裝程序對系統作的 修改,這樣可以直接在當前系統進行測試,而不需要到另外一個沒有安裝過flashget的系統測試。

Emeditor是方法1的一個反例。Emeditor可以從開發商主頁http://www.emurasoft.com/下載,是一個簡單好用的文本 編輯器,支持多種配置,自定義顏色、字體、工具欄、快捷鍵設置,可以調整行距,避免中文排列過於緊密,具有選擇文本列塊的功能(按ALT 鍵拖動鼠標),並允許無限撤消、重做,總之功能多多,使用方便,是替代記事本的最佳編輯器。
下載emed404epx.exe後,發現用Winrar可以打開,解壓後,運行Emeditor,發現丟失了預定義的多種文本格式的語法配置,看來這樣做不行,只好採用方法5了。請隨我一步步進行,步驟如下:
1 掃描系統,制訂系統快照。這裏我僅僅記錄當前系統的註冊表(因爲我認爲Emeditor不會向系統目錄拷貝文件,如果判斷錯誤,就會導致“綠化”失敗), 運行ART(Advanced Registery Tracer),掃描一遍註冊表。如圖emeditor_snap.PNG,不要關閉ART。
2 安裝Emeditor。隨便安裝到哪裏,反正一會就卸載。安裝好後,如果需要的話,更改配置,或者配置新的文件類型,例如我就增加了NFO文件類型,設定和NFO文件相關聯的字符集,這樣可以用Emeditor直接察看NFO文件,不需要專門的察看工具了。
3 記錄系統變化。再一次掃描系統,給系統作快照,從ART裏面再一次掃描註冊表,然後選擇菜單命令Registry-〉compare here或者直接用鍵盤F10,比較結果如圖emeditor_compare.png,點擊圖中那個save to redo file的按鈕,存儲爲Emeditor.reg文件,關閉ART。
4 複製並卸載。複製安裝好的Emeditor目錄到其他路徑,然後卸載Emeditor程序。
5 分析。打開剛剛導出的Emeditor.reg文件,這是一個巨大的reg文件,單單是REG文件就有1兆多,不過不用擔心。閱讀註冊表後,刪除和 emeditor無關的註冊表項後,如僅僅和資源管理器相關的註冊表部分,發現剩下的註冊表文件可以分成3個部分。一部分在位於註冊表的這個路徑 [HKEY_LOCAL_MACHINE/SOFTWARE/EmSoft],裏面大部分不涉及路徑,只有一項記錄了Emeditor的路徑,就是 "ModulePath"="h://EmEditor4//";還有一大部分在註冊表的這個路徑下面[HKEY_CURRENT_USER/ Software/EmSoft/EmEditor v3],裏面有很多項都涉及了Emeditor的路徑,如"Tmpl"="h://EmEditor4//template.xml";還有就是和 Emeditor和txt文件後綴向關聯的註冊表設置,把Emeditor設置爲IE中缺省的源代碼察看工具的註冊表設置以及註冊COM組件 EMEDSHL.DLL的註冊表部分(和InProcServer32相關的就是)。
6 “綠化”。
6.1 把位於註冊表路徑路徑[HKEY_LOCAL_MACHINE/SOFTWARE/EmSoft]的內容存儲到emeditor_HKLM.reg文件 中,把位於註冊表路徑[HKEY_CURRENT_USER/Software/EmSoft/EmEditor v3]的內容存儲到emeditor_HKCU.reg文件中,把剩下的內容首先除掉COM組件EMEDSHL.DLL的相關部分,然後存儲到 emeditor_assoc.reg文件中。
6.2 把emeditor_HKLM.reg文件和emeditor_HKCU.reg文件中涉及到路徑的註冊表內容抽取出來,存儲到emeditorConf.reg文件。
6.3 把emeditor_assoc.reg文件和emeditorConf.reg文件用INF的語法轉換爲INF文件,或者用一個免費小工具 reg2inf.exe自動轉換,然後把轉換得到的emeditor_assoc.inf文件和emeditorConf.inf文件中的路徑h:/ EmEditor4全部用%01%代替。下面是emeditorConf.inf文件的內容:
[Version]
Signature="$CHICAGO$"
[DefaultInstall]
AddReg=EmeditorConf_AddReg
hklm,"SOFTWARE/EmSoft/EmEditor v3/Common","ModulePath",,"%01%/"
hkcu,"Software/EmSoft/EmEditor v3/Config/C++","Tmpl",,"%01%/template.cpp"

發佈了23 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章