安裝完操作系統後,我們通常需要安裝壹些常用的軟件,但是隨著我們常用軟件的增多,這個安裝過程變得越來越枯燥:運行setup,然後選擇目標路徑,重復這個過程。後來看到有人做了所謂的便攜應用,不用安裝就很方便。當時很好奇想知道道怎麽做,有沒有什麽方便的工具等等。,但是我在網上沒有找到相關的知識。隨著自己壹步壹步的摸索,逐漸積累了壹些經驗和比較有效的方法,在這裏提供給大家。
首先,什麽是便攜應用?它的定義是什麽?我收集了壹些網友的討論和想法:
a說,不需要安裝,也不要往註冊表裏寫任何東西。
b說還應該包括不把文件復制到系統文件夾。我的理解是安裝這個軟件對現有的操作系統沒有任何改動,包括寫註冊表等等。
c說除了現在正在安裝的目錄之外,不要在任何地方寫任何東西(比如日誌)。
d說,安裝是免費的,在程序所在目錄之外的任何地方都不會生成垃圾文件,也不會寫註冊表。
e說,綜上所述,添加壹項可以在移動存儲的任何電腦上使用,效果相同。
f說,好像不寫註冊表,直接復制就可以用了。
g說重裝系統的時候只需要導入註冊表,不用重裝就可以認為是便攜應用。
h說,其實只要不把註冊表或者文件寫到系統文件夾裏,就算了。ini文件在軟件自己的目錄下,可以算作便攜應用,特點是可以隨意復制到其他文件夾或者重裝系統後直接使用,沒有其他改動。所以少部分“安裝”的軟件其實是符合便攜應用的,因為它的安裝只是解壓和創建文件夾。
我說,基本同意,但是不寫註冊表幾乎不可能。只要妳運行軟件,打開註冊表編輯器HKLM和HKLU下的軟件看壹看,幾乎所有的鍵值都會留下。其實這也應該叫綠色。
綜合以上評論,我們可以總結出便攜應用的優點,那就是對操作系統沒有汙染(這恐怕也是green這個名字的由來),不需要安裝,容易卸載,便於攜帶,可以拷貝到便攜u盤上到處運行。
我的觀點是便攜式應用應該分為狹義的綠色和廣義的綠色:
狹義的綠色可以稱為純便攜應用,也就是說這個軟件沒有改變現有操作系統的任何部分。除了現在安裝軟件的目錄,妳不應該在任何地方寫任何東西。刪除的時候,直接刪除目錄就行了,就像以前的大多數DOS程序壹樣。
廣義上的綠色是指在沒有特殊安裝程序的情況下,對系統的改動很少,並且這些改動可以很容易地手工完成,比如復制幾個動態庫或者導入註冊表。這裏的關鍵是,這些更改可以很容易地手動完成,或者借助腳本(如批處理)來完成。
為什麽要分成兩類?雖然狹義上的便攜應用是最理想的,但是完全符合這個定義的軟件是非常少的,相當多的軟件可以歸為廣義上的綠色,這使得便攜應用的概念在包含了廣義上的便攜應用的概念後更有意義。
那麽哪些不符合便攜應用的要求呢?主要指與操作系統密切相關並集成在壹起的軟件。這些軟件不適合做成便攜應用,最好用原來的安裝程序安裝。比如IE6替代了系統中的很多動態庫,手工完成這個過程很難,也不安全。比如大部分殺毒軟件,如果需要實時監控系統底層運行,就不適合做便攜應用。還有微軟的Office系列軟件,也與系統緊密結合。然而,這種寬泛的標準更加靈活。如果有人知道fice系列軟件的安裝制作流程,也有可能制作出壹個寬泛的綠色辦公系列。
為了全面理解可移植應用的定義,必須從現代軟件的安裝過程和運行過程兩個方面來討論。
安裝流程:以前在dos下,沒有便攜應用這壹說。本來程序的安裝基本就是簡單的復制或者解壓,然後配置config.sys和autoexec.bat文件。隨著windows的發展,應用軟件變得越來越大,越來越復雜,所以壹些公司專門制作安裝程序。比如InstallShield就是壹個眾所周知的、應用廣泛的安裝軟件,現在windwos有壹個專門的安裝程序,就是微軟安裝程序。安裝程序的作用是什麽?主要是為要安裝的程序提供壹個簡單方便的設置環境,不需要用戶手動完成這壹步。配置過程越復雜,對系統的修改越多,對安裝程序的依賴程度就越高。Windows程序易學易用的優勢離不開壹個好的安裝界面。安裝軟件的任務是為應用程序提供壹個初始的、完整的環境,而不需要用戶手動配置。
運行過程:當應用程序啟動時,從註冊表或配置文件中讀取配置。當它運行時,可以修改配置,但是這種修改通常基於安裝軟件所做的工作。例如,應用程序的安裝位置不能更改。
了解了安裝過程和運行過程的區別之後,就很容易想到根據這兩個階段將便攜應用的使用分為綠色安裝過程和綠色運行過程。綠色安裝是綠色運營的前提。沒有綠色安裝,就沒有綠色運營。便攜應用首先必須是綠色安裝。我前面說的基本不適合便攜應用標準。
我認為綠色裝置的基本含義可以分為狹義和廣義:
1狹義的綠色安裝是指直接復制或解壓到目標目錄,這是最理想的情況,或者安裝程序的作用除了理解壓縮可以忽略,比如在開始菜單添加快捷鍵等對系統和軟件運行影響不大的操作,也就是說安裝過程的作用就是將文件復制到目標文件夾。
廣義上的綠色安裝是指在狹義復制的基礎上,必須將壹些動態庫復制到系統目錄下,或者將必要的設置導入註冊表,或者進行壹些其他的配置。否則,應用程序無法運行,配置工作應該相對簡單,並且很容易撤銷這些操作對系統造成的更改。
同樣,綠色運營可以分為狹義和廣義:
1狹義的綠色操作是指軟件運行時,操作系統的文件和配置完全不變——很多小程序都屬於這壹類,或者運行後取消了對系統的更改,比如運行時加載壹個驅動,退出時卸載驅動,運行的INI文件在自己的程序目錄裏。
廣義上的綠色操作是指可以通過程序本身改變當前的設置,比如改變當前軟件的運行模式,或者與壹些文件後綴關聯,或者將當前的軟件設置留在註冊表中,也就是說對系統的註冊表有永久性的改變,但是這些改變是由應用程序自己完成的,不需要其他程序的幫助或者手工完成。
集成綠色安裝和綠色操作,便攜式應用可細分為:
1是狹義的綠色安裝,也是狹義的綠色運行軟件,不需要對操作系統做任何改動。
2狹義的綠色安裝,廣義的綠色運行軟件,軟件配置工作是由軟件本身完成的,不是通過安裝程序。
廣義的綠色安裝和狹義的綠色運營。軟件的配置由安裝程序完成,軟件本身不能修改配置。同時,如果沒有配置工作,軟件無法正常運行。
廣義的綠色安裝,廣義的綠色運行,最復雜的便攜應用,軟件配置是由安裝程序完成的,但是軟件本身可以修改配置,同時如果沒有配置工作,軟件就無法正常運行。
只有第壹類屬於狹義的便攜應用,其他三類屬於廣義的便攜應用。
讓我們來談談便攜式應用程序的生產,稱為軟件的“綠化”。便攜應用的制作,其實就是我們自己安裝程序的工作。沒有固定的方法,基本都是猜測和試驗。不同類型的便攜式應用程序有不同的生產策略。
當我得到壹個新軟件並想把它變成可移植的應用程序時,我通常遵循以下步驟:
1判斷。就是猜測這個軟件是否可以做成可移植的應用,從功能上,從妳對它的了解上,如果妳覺得這個軟件和系統密切相關,就不要繼續了,還是用原來的安裝程序最安全最方便,這樣的例子有directx9,IE6,諾頓的殺毒軟件等等。這個判斷可以節省妳的時間。當然,妳可以忽略這壹步,嘗試制作可移植的應用程序,然後轉到步驟2。
2“綠化”。不同的軟件有不同的方法,沒有壹定的規律,但總的來說就是了解軟件的安裝過程,切換到綠色安裝。在這個過程中,妳可能需要嘗試多種方法,也可能由於軟件的復雜性或某些特性,最終無法綠色化。做好失敗的準備,具體的綠化方法後面會講到。
3測試。“綠化”後的測試最好在妳新安裝的操作系統中進行,如果要在多個操作系統中使用這個軟件,也要在其他操作系統中進行測試。壹些軟件文件因不同的操作系統而異。這時候妳就需要在不同的操作系統中進行“綠化”過程,最終整合成壹個完整的適配多種操作平臺的便攜應用。
“綠化”方法需要根據經驗選擇不同的“綠化”方法,也可能需要不斷嘗試不同的方法,直到成功。按照由易到難的順序,具體方法包括:
1解壓。這是最簡單的方法,就是直接嘗試解包軟件的壓縮包。用Winzip和Winrar試試,看能不能直接打開壓縮的安裝文件。如果打不開,試試別的方法。如果是,那麽恭喜妳,這個軟件大部分是綠色安裝的軟件(也有少數例外,比如E mEditor)。將壓縮包中的文件直接解壓到目標路徑,然後測試軟件的功能是否正常。如果功能正常,那麽“綠化”就成功了。如果不正常,那就換壹種方法。這類軟件的特點是程序的安裝完全可以由軟件自己完成。
2安裝然後卸載。也是壹種比較簡單的方法,完全是手工勞動,就是直接安裝軟件,然後復制程序,最後卸載安裝程序。如果軟件安裝程序的功能只是復制文件和生成快捷鍵,那麽就屬於綠色安裝,可以使用這種方法。最後,測試軟件的功能是否正常。如果功能正常,那麽“綠化”就成功了。如果不正常,那就換壹種方法。
3反編譯安裝程序。這種方法需要動腦,即根據安裝程序使用的制作工具,選擇相應的反編譯程序,然後讀取反編譯後的安裝腳本,做出可移植的應用。目前大部分軟件是由專門的安裝工具制作的,如InstallShield、Wise、Inno Setup、Windows Installer、NSIS (Nullsoft)和Installer Vise,其中Windows Installer格式的安裝文件(即帶有MSI和MST後綴的文件),可以通過微軟的免費工具Orca打開查看。還有很多免費的工具可以解壓和查看InstallShield格式安裝文件中的腳本。當然還有很多專門的安裝工具,很多安裝程序都沒有相應的防編輯程序。在這種情況下,不能使用這種方法。
4觀察反安裝程序和日誌文件。目前大多數軟件安裝都有卸載方法。卸載是安裝的反向過程。如果妳知道如何卸載,妳也可以推斷如何安裝。由專門的安裝工具制作的反安裝程序,通常是根據壹個文件中的信息進行卸載的,這個文件可以用純文本編輯器打開。在某些情況下,這個文件根本不包含任何可讀信息,所以我們必須使用其他方法。具體流程是先采用方法2,然後了解反安裝流程,最後根據反安裝信息進行可移植應用。
5比較系統快照。當前面的方法都失敗了,妳可以試試這個方法。具體思路是在安裝軟件之前記錄系統的狀態,主要包括註冊表和系統目錄下所有文件的狀態。然後安裝軟件。安裝完成後,再次記錄系統狀態。最後對比前後兩個系統的不同狀態,知道安裝程序做的工作。這項工作通常由專門的軟件完成,如免費工具Regshot和免費工具inctrl5(/article2/0,414...WinInstall LE(在Windows 2000 Sever CD的目錄值中添加rd party \ mgmt \ winstall \即可)。在大多數情況下,只需要比較安裝前後註冊表之間的差異。這個時候有很多註冊表工具可以選擇。得到系統差異後,將差異分為兩部分:文件部分和註冊表部分。文件部分是指復制到系統目錄的文件、註冊為COM組件的文件以及與這些文件相關的註冊表部分。註冊表部分僅指註冊表其余部分的更改。對於文件部分,我們可以進壹步區分必須復制到系統目錄中的文件(在本例中是幾個)和可以放在軟件安裝目錄中的文件。對於註冊表部分,將本軟件本身的安裝程序所做的註冊表操作與註冊COM組件時的註冊表操作區分開來,舍棄其他程序(如Explorer)的操作。根據這些,編寫壹個復制文件,註冊COM組件,將批處理文件導入註冊表,就可以完成可移植應用的制作了。當註冊表文件包含路徑信息時,可以手動修改註冊表文件或將其轉換為INF文件,實現自動路徑處理。
6.直接導出註冊表並查找自註冊的COM組件。該方法是上述方法5的簡化版本。目前軟件配置多寫在註冊表中“HKEY _本地_機器\軟件\軟件公司名稱”和“HKEY _當前_用戶\軟件\軟件公司名稱”這兩個註冊表項下,這兩個註冊表項直接導出到REG文件中。自註冊COM組件都需要導出以下四個函數:DllCanUnloadNow、DllGetClassObject、DllRegisterServer和DllUnregisterServer。妳可以使用vc自帶的depend.exe來查找哪個動態鏈接庫是自註冊的COM組件。最後,編寫壹個批處理文件,用regsvr32.exe註冊COM組件,用regedit.exe導入註冊表。
通過以上對安裝程序動作的分析,將安裝程序的工作分解為幾個部分,如復制文件、註冊COM組件、安裝服務驅動、配置註冊表等。雖然註冊表配置可以涵蓋註冊COM組件、安裝服務驅動等操作步驟,但是把這些部分明確分開,有助於制作綠色安裝的軟件。對於需要更復雜步驟安裝的軟件,使用原安裝程序更安全。
對於每種方法,我將在下面給出具體的例子。有時候,需要幾種方法壹起使用。不管用什麽方法,都是模擬軟件原作者的安裝過程,所以原作者最有可能給出的是軟件的綠色版本。
flashget_wise。PNG
flashget160a。PNG
Winrar3.30和Winzip9.0,使用方法1,解壓。這個方法很簡單。從天空軟件站下載Winzip90.exe和winrar330sc.exe。在安裝了Winrar的系統上,用鼠標右鍵選中下載的文件,在右鍵菜單中運行用Winrar打開的命令,然後將文件解壓到我們的目標路徑,比如E: \ Tools目錄。然後分別設置Winzip9和Winrar。在winzip9目錄下運行Winzip32.exe來設置winzip。Winrar也是壹樣,運行Winrar.exe,打開菜單選項->設置,彈出對話框,選擇tab-集成,如圖WinrarSetting.png,逐項設置Winrar。當復制到USB閃存驅動器並在新機器上運行時,需要重復這些設置過程。
這類軟件的特點是安裝程序完全可以由軟件自己完成,從而完全拋棄安裝程序,或者說安裝程序是解壓。類似的軟件還有壹些,最簡單的測試方法就是看Winrar能不能直接打開壓縮的安裝程序。也可以采用方法2,流程基本與方法1相同。
方法2就不細說了,只是指出屬於這壹類的程序有很多,比如Myie2,GreenBrowser,qq,BPFTP Server,IDA _ Pro _ Standard _ 4 . 5 . 1.770,FinalData,EASYRECOVERY 6.03,Tenson公司的TM等等。
Flashget是壹個被人們廣泛使用的軟件。可以多線程下載,下載管理功能非常方便。從sky.com天空軟件站下載國際版flashget1.60a,運行,如圖flashget_wise所示。PNG,然後取消安裝。從圖中可以看出,flashg et1.60a國際版是Wise制作的安裝程序。從網上下載wungui程序,把安裝程序解壓到壹個目錄下是非常容易的,如圖flashget160a。PNG,並觀察Maindir目錄。有兩個DLL文件,Jccatch.dll和fgiebar。dll。對這兩個動態庫文件的導出函數的進壹步檢查表明,這兩個DLL文件是自註冊的COM組件。編寫壹個批處理文件install.bat來註冊這兩個dll:
註冊表32 JCCATCH.DLL/秒
註冊表32 fgiebar.dll/秒
經測試,功能正常,在瀏覽器IE中可以從鼠標右鍵菜單中激活flashget,功能完整。我們來考慮壹下卸載過程。
運行Regedit.exe,發現flashget在註冊表中的路徑是【HKEY _當前_用戶\軟件\ jetcar \ jetcar】。編寫壹個註冊表文件unflashget.reg來刪除該路徑,如下所示:
註冊表4
;flashget
[-HKEY _當前_用戶\軟件\噴氣車\噴氣車]
同時編寫壹個批處理文件uninstall.bat卸載這兩個DLL文件,導入到unflashget.reg中:
Regedit unflashget.reg /s
JCCATCH.DLL/南美洲
fgiebar.dll/南美洲
然後刪除壹些我們不需要的文件,比如語言目錄裏的大部分歐洲語言文件。這時,這個綠色版本就做好了。將制作好的綠色flas hget復制到u盤中,需要的時候直接執行install.bat文件即可(註意批處理文件要在flashget的目錄下運行),不需要任何文件復制。
我看到有人提到用壹個優化器把falshget的註冊表提取出來然後直接導入註冊表做壹個綠色的flashget,這是不可行的。從我之前的步驟來看,註冊兩個DLL文件,必然會在註冊表中引入壹個絕對路徑,所以如果直接提取註冊表,必須根據當前路徑修改註冊表中的路徑,否則綠色版的flashget made只能在固定目錄下運行。當我制作綠色版的flashget時,我同時使用了方法3和方法6。使用方法3的目的是為了避免安裝程序對系統的修改,這樣我就可以直接測試當前系統,而不用去另壹個系統安裝flashget。
從上面的例子可以看出,方法2和方法1基本相同,只是方法1是用WinRar解壓,方法2是用安裝程序解壓。方法6可以說是方法5的簡化版。方法3和4也可以輔助方法5,其中壹些需要結合使用。有時很難判斷使用哪種方法。方法是死的,需要靈活運用,有時需要不斷試驗。
我簡單說壹下幾個軟件在“綠化”時使用的方法。有些軟件可能有多種“綠化”方法,但最終結果基本相同:
沒有提到方法1的使用。只要沒有特殊的安裝程序,直接以zip的形式發布的話就用1的方法。
CuteFTP、Flashfxp、qq、foobar、winamp2.8、acrobat、FinalData、金山軟件、ZoomPlayer、WinISO、IsoBuster、WinISO、MIRC、WinCVS、Photoshop6、EASYRECOVERY 6.03、網易泡泡用法2。
VisualC++ 6、real player和realmedia的解碼器包,以及vp6、mpeg2、ac3、ogg、divx、xvid等大多數解碼器都使用方法5。
Netants,flashget,OfflineExplorer acdsee,ultraedit,IBM Dictionary,theBat,Web文本的快速捕獲,以及CyberArticle和PartitionMagic7的當前使用方法。
Directx9,Mediaplayer9,IE6,微軟補丁,Office2003,殺毒工具NAV,Java虛擬機,虛擬機VMware等。都不適合“綠化”。有些不知道怎麽“綠色”或者比較難,比如Office 2003。我認為在硬盤上安裝Office,然後提取註冊表中的變化的方法叫做“綠化”,因為註冊表文件中有大量的絕對路徑,並且Offcie的組件之間有復雜的連接,所以很難“綠化”。有些是毫無意義的“綠化”,比如IE6,微軟補丁,Directx9等等。
目前我用的大部分軟件都是“綠色”的,只有少數是必須安裝的,比如MS Office,Visual Studio.net 2003等等。感覺很方便,尤其是換盤符的時候。它非常簡單,可以攜帶。