對Registry有初步的認識之後,就可以來談談「軟體的安裝」這件事。

軟體大致有以下三種「規模」的安裝方式:

● 小東西
這種軟體很小,小到丟到桌面或是哪裡,直接執行就可以了。這種軟體大多是自行製作,或是功能單純的小軟體(自己用程式語言簡易開發出來的小程式,我──我寫過,但是那是很久以前囉),像是……像是……,對不起我還找不出一個好例子,總之這種完全不需要安裝的軟體少之又少,雖然你裝再多也不易造成系統啟動時的負擔(只會佔用硬碟空間),但有點「用處」的軟體大多不會這麼單純。

● 小程式
這類程式因為規模小而不會被稱為「application」,通常會被稱為「applet」。這類程式通常會伴隨著安裝程式本體、registry和設定檔到Windows系統裡,所以雖然小,但通常也會用安裝程式進行一些安裝步驟。但由於軟體的規模很小,因此這類程式有時會有所謂的「綠色版(內地的說法,國外的說法是portable,可攜式)」,只要將整個資料夾複製電腦裡面,或是放在隨身碟裡面就可以執行了。這類軟體因為規模很小很單純,所以裝到Windows系統內「通常」也不會造成Windows啟動時的負擔。

● 應用軟體
應用軟體可大可小,但通常「功能複雜」的軟體總不太可能太小,這類軟體通常包含了程式本體、動態連結程式庫(DLL file)、設定檔(configuration)、註冊檔(registry)、環境變數的設定、範本(template、demo……)或是剪輯圖片(clip art)……。這類軟體的典型範例就是Microsoft Office或是Adobe Creative Suite了,安裝通常要經過許多步驟,費時甚久。不過,大多軟體都屬於這種類型,所以系統裡面安裝多了這類大堆頭軟體,系統出問題的機率也就大增。

所以底下的「軟體安裝原理」說明,就針對應用程式來說說吧!

應用軟體的構成

再稍微詳述一下應用軟體的構成元素:

● 程式本體
比方說你安裝一套應用軟體,通常一定會有這個程式的本體得複製到硬碟裡,以Word為例,它的程式本體就是「WINWORD.EXE」。不過越是「強大」的軟體,越喜歡把本體弄得「關係複雜」、「支離破碎」,所以你可別以為只要保留這個程式本體,這程式就能執行,那可是「錯錯錯連三錯」。在大型程式的成份中,程式本體只是個「呼叫器」,它只是個開端,當你執行它之後,它還會呼叫其他(由開發者設計的)的程式片段,很像大隊接力一樣。

有人可能會想要問:「這樣做有什麼好處?」有的,但不是我們一般人的智慧所能理解。簡單來說,開發大型應用程式,把主程式「切段」有其設計上的需求(而不是對使用者有特別的好處)──但這確實會造成軟體不好維護的奇怪狀況。你問我:「那為何軟體廠商還是這樣做?」我也不知道為何,反正一直就是這樣……。

● 動態連結程式庫(DLL file)
應用軟體的開發工具中,會把一些常用的功能放在一個檔案裡面,讓所有程式分享,這檔案就被稱為動態程式庫(dynamic-linked library,DLL)。

比方說,Word有「開啟檔案」的功能,Excel有「開啟檔案」的功能,PowerPoint一樣也要「開啟檔案」……那麼如果開發Office的時候,把「開啟檔案」放在一個單獨的檔案裡面,讓眾應用程式分享這個功能,那這檔案通常就會以DLL檔的形式,放在硬碟上的某處,讓眾應用程式共同存取。

這對應用程式的開發有很多的好處,如果有天你發現某個功能要改,而這功能剛好放在DLL檔案裡面,各位想想,開發者只要改這個DLL檔案,就把所有用這DLL檔的程式都更新了……多省事。此外,這麼做也可以節省硬碟空間,如果有八個程式都共用同一個DLL檔案,這DLL檔案佔用的七份空間就都被省下來了。

不過,以上說法只是說得好聽罷了,實際上DLL檔案的運用也有其他問題,當應用程式本體實際上是由「呼叫器」+「DLL檔案」+「其他檔案」……組合而成,DLL檔案被不經意的複寫,刪除等等狀況就常常發生,可說是造成系統問題的一大因素。所以你軟體裝越多系統問題就越多,有時不只是「技術」問題而只是「機率」問題罷了(因為裝越多系統就自動變脆弱,請參考軟體彼得定律)。

● 設定檔(configuration)或註冊檔(registry)
當你執行一套「看圖軟體」,並紀錄看圖軟體使用「全螢幕」看圖──這所謂的「全螢幕」就是一個選項。如果你希望你的看圖軟體記住這選項,這軟體就得把選項紀錄下來。請問,選項被紀錄在哪裡?

一般而言,選項會被紀錄在設定檔裡面,而設定檔通常會以「.INI」副檔名存放。但有些和系統相關的設定(像是主程式要開啟哪些文件檔案),就非得把這類設定寫入Windows的註冊資訊裡面。如上期所述,當註冊資訊越來越肥大之時,Windows系統的效能也就會受到極大的衝擊。

既然會有缺點,因此也不是每套軟體都喜歡把設定寫到註冊檔裡面。

近來所謂的「XML」文件格式頗為盛行,這XML格式很像是個「純文字格式的資料庫」。這類XML既可以方便修改(使用純文字編輯器即可編修),又可以當資料庫使用,因此可說是新一代的設定檔格式,一些規模較小程式也就用這類格式記住設定,不再用註冊檔或是.INI檔案了。

事實上,Windows Live Messenger的對話紀錄,或是Office 2007的大部分文件格式,都採用了XML格式。換句話說,在這個「後現代web主義」的時代,所有的文件都是資料庫形式的一種,因此都可以用XML格式儲存,而「有心人士」只要研究XML格式,就可以用逆向工程的方式去製作相容軟體,或是自行編修軟體的設定──不過,這部份就以後有機會再說,現在只要知道某些軟體已經開始使用XML設定檔格式了。

● 範本(template、demo……)或是剪輯圖片(clip art)
很多軟體會提供大量的圖片檔案、字型或是範例,字型會造成系統效能的負擔(所以安裝時要注意別裝太多),圖片檔案或是範例則會佔用硬碟空間。這類檔案多多少少都可以讓使用者的工作更省事,只是你得知道它們也是一種負擔。

安裝軟體的過程

既然應用軟體的組成這麼複雜,所以安裝程序就變成了一個複雜的過程。用本人的口吻來說的話,我會說:「這是一個精巧──但脆弱的過程。」一旦有一點小問題,這精巧脆弱的過程就會全部崩潰。所以常有人會說「我的軟體不能安裝」,這是正常的,因為每個人的電腦也不知道是不是千瘡百孔,哪有每次安裝啥都能裝得起來的呢?(題外話:通常人生也是如此啊……)

軟體安裝的過程通常是:

1. 將程式解壓縮到使用者的暫存資料夾
應用軟體通常會以一個「壓縮包」或是「安裝包」的單一(或是多個)檔案形式,讓使用者下載安裝,因此安裝前,安裝包會進行「解開」的工作,所以安裝軟體時得有足夠的硬碟空間(有時甚至要有兩倍於軟體將會佔用的空間)就是這個道理。

2. 將程式本體(全部組成物)複製到使用者的儲存媒體上(通常是硬碟機上的「C:\Program Files」資料夾裡面)
如果是Windows 7 x86系統,32-bit應用程式將會複製到「C:\Program Files (x86)」資料夾裡面,只有64-bit應用程式會被複製到「C:\Program Files」裡。

3. 將DLL(或是其他分享的程式庫)放置到「某處」
這部份沒有什麼統一標準,每個應用軟體的「習慣」都不同,比方說,「C:\Program Files\Common Files」可以用來放一些「該公司軟體共用的程式庫」。這部份雖然不是每個使用者都需要知道的,但從這裡就可以看出──廠商把應用程式的檔案弄得支離破碎散布在硬碟各處絕對不是好事。

4. 寫入註冊資訊和設定檔
如果是非得寫入註冊檔的資料,安裝程式會把資料「匯入」Windows系統。若是文字型的設定檔,安裝程式會把檔案寫入硬碟裡面(預設是「C:\ProgramData」資料夾,這是官方預設希望開發廠商把設定寫入的位置)。

5. 建立程式群組、捷徑
程式安裝到硬碟後,通常會建立桌面捷徑或是開始功能表群組,讓使用者知道去哪裡執行這程式。不過這只是捷徑而已,佔用空間其實很小,程式本體其實是在硬碟上頭,但很多人並不知道這一點。

6. 把暫存檔案刪除
一切就緒之後,安裝程式理應把安裝前建立的暫存檔案清乾淨再退出才對──但是很奇怪的是,很多應用軟體會把暫存檔放著不管。於是乎,裝了很多軟體之後,你的硬碟空間就越來越少,而且是一種沒必要的浪費(安裝過的軟體,暫存檔案根本沒有留下來的必要),這也是系統效能漸漸低落的另一個原因。

反安裝的過程

如果你裝了某套軟體,但因為某種原因(試用期到、不喜歡用這軟體……)而打算移除之,請問它會做哪些動作?

事實上,反安裝的過程,理應就像是安裝過程的相反動作──確實沒錯。除了「刪除暫存檔」的動作不必做了,大致上的過程就是「刪除程式群組&捷徑」、「刪除註冊資訊或是設定檔」、「刪除共用檔案」、「刪除程式本體」等等。

聽起來很容易,不是嗎?

當然不是。

比方說,刪除「共用檔案」就是個問題,如果你反安裝的軟體,使用的「共用檔案」也是其他軟體要用的,那直接移除卻可能會導致其他軟體的問題,這可不能說刪就刪。再以「設定檔」為例,你說不定已經改過設定檔內容了,並想要保留之以待未來使用,或是設定檔裡頭還有重要資訊,你不想刪除,這些都是需要考慮的問題。

說穿了,反安裝的藝術就是:一定要做到船過水無痕,但事實上是:「絕無此事」,一向都是「凡走過必留下很多痕跡」。

本期結論:軟體彼得定律

據說有種彼得定律是說:企業裡的人才會被拔擢,但是一旦他勝任該工作,就會被繼續升職,最後被升到一個他無法勝任的職位──於是,久而久之,企業裡面將充斥著無法勝任職位的人。

軟體也有彼得定律:由於所有軟體終將被加入「更強大,更新穎,但鐵定有bug的功能」,於是久而久之,電腦裡面終將充斥了很好很強大的軟體,但鐵定問題多多的程式……所以,電腦鐵定是不會穩的,因為絕對穩定是不可能的。

這就是為何很多人都會說:「能少裝一點軟體就別裝」,因為有時並不是軟體本身的問題──因為「安裝」這行為就是個問題。這問題無解,我們只能盡量避免而已。

 

這是Windows預設的「暫存資料夾」所在處,你可以用「清理磁碟」這功能,定期清理這裡不再需要的垃圾檔案。

熱門新聞

Advertisement