Windows遊戲等程序安裝,其內部過程是怎樣的?

很多網遊下載下來後都是先下載的安裝包,打開安裝包後安裝完才能打開遊戲,安裝是一個怎樣的過程?是解壓還是繼續從服務端下載數據包?


一般流程是這樣的:

首先,你看到的那些文件其實大部分都是資源文件和編譯好的動態鏈接文件,真正的客戶端文件很小,一般幾十M以內。資源一般都是放在固定文件夾下的,因為在代碼中很可能這些是直接寫死的。一般的可執行文件需要加上公司的簽名,加完簽名以後某數字之類的軟體才不會誤殺(因為沒加簽名的默認認為是可疑文件),加完簽名以後整理到固定的目錄下,然後使用已經寫好的批處理文件打包成可執行文件

實際上遊戲開發人員見到的目錄與你見到的目錄完全相同,只不過很多資源在用戶面前是加密或者打包了的,使用常規方法無法查看。而安裝文件則是將這些資源文件重新解壓到指定的目錄,在安裝過程中也會寫入一些註冊表信息。解壓完成以後就是我們見到的安裝目錄,包含遊戲可執行文件,各種資源文件,動態鏈接庫等文件。一般不會將自己的動態鏈接庫直接放入系統目錄下,這不是一個好習慣

更新包的話,就是一個一股腦兒將需要更新的資源直接替換的可執行文件


1、打開你的Steam客戶端,進入「商店」

2、尋找你想玩的遊戲,沒有找到就不要玩

3、點幾(依稀記得是6下next……)下滑鼠確認購買安裝

4、等

5、開始玩

根據一些小道消息,Steam應該是使用p2p技術來下載的,第一次運行遊戲的時候會先把依賴(譬如說DX)裝上,然後跑一個腳本往註冊表裡面寫點東西,然後就開始玩了。


前一陣給AFK很久的eve(星戰前夜)的歐服號又沖了下卡

發現歐服現在已經實現裝上啟動器就能玩的功能了

而遊戲會在你玩的過程中下載所需數據

第一次退出遊戲後我觀察了一下遊戲文件夾大概有幾百M

玩了幾次以後再看變成了幾G

星際爭霸2也有邊下載邊玩的功能

不過你得忍受低清晰度的CG


就拿steam上正常的遊戲來說。

1、購買之後下載。

2、下載的是壓縮文件。貌似是放在steam/steamapps/downloading。

3、下載之後解壓。解壓到steam/steamapps/common。

4、首次運行會執行一個腳本按照運行時。據聞會寫註冊表。文件拓展名是vdf,但是可選。

V社自己的遊戲貌似會有點不同。如果你這電腦有多個steam賬號登錄且都有相同遊戲(例:L4D2),在steam/steamapps/賬號名/下面安裝。部分公有文件還是在common裡面。

PS:不要在意斜杠和反斜杠。


  1. 從壓縮檔/目錄/網路複製文件
  2. 在程序清單中註冊(寫註冊表)
  3. 安裝需要的依賴庫
  4. 某些遊戲還需要解密


軟體安裝過程中將文件解壓到特定的目錄是最基本(必須)的一步,也是第一步

後續還需要往系統中添加dll文件(非必需,軟體作者自己寫的dll,用到別人的dll但是系統不自帶的等等)

寫註冊表(非必需,寫入軟體設置,註冊添加進入系統的dll),註冊表本身就是一個記錄系統與應用設置信息的資料庫

重裝(copy)後能夠直接用的軟體說明它所依賴的dll都是系統本身就自帶的那些,沒有自己添加的;或者是添加的時候就是添加在安裝目錄,軟體執行的時候引用的是相對目錄,這種方式相當於直接解壓文件到安裝目錄

同理,不能執行的多半是找不到所依賴的dll

一個軟體依賴的dll取決於它實現的功能與其作者的寫法,系統本身會自帶很多通用的dll文件(C:WindowsSystem32;C:WindowsSysWOW64),但當這些自帶的dll滿足不了軟體需求的時候(如一些遊戲所需的,或者作者自己實現的dll),就需要往以上兩個文件夾里新添加


安裝過程不一定,大概三種。

1. 只解壓本地安裝包,沒網也 OK。

2. 解壓本地安裝包,但某些必要部分需要聯網下載。

3. 可能你的「安裝包」只是個下載器,打開之後才會完整下載整個遊戲再安裝。

順便,判斷安裝過程是否下載,方法太多,自行百度。


遊戲程序與一般程序並沒有太大的區別,屬於軟體分發與部署的範疇。

當一個程序開發完成之後,經過一系列步驟形成可執行文件,以及可執行文件所依賴的文件(各種庫,資源)。分發部署的目標就是把這些文件有效地(有時是大規模地)遷移到目標計算機,使得在目標計算機中依舊可以成功完成各個預定功能。

透過網路,也可以通過介質(CD/DVD, U盤)獲取到這批文件後,如何保證這些功能可以成功運行就是安裝程序的職責。通常包括但不限於——檢測目標是否已經安裝完畢;檢測目標系統環境是否符合安裝條件;安裝/更新運行時;註冊/反註冊組件;添加/刪除註冊表項;添加/修改/關閉某些系統設置;申請/吊銷某些許可權;解壓為了減少傳輸體積而添加的壓縮包獲取目標;把目標文件按照約定的方式複製到合適的位置;執行其他安裝/卸載程序;啟動/關閉某些應用程序;獲取/釋放某些獨佔資源。

由於這些文件中包含可執行的文件,出於分發方便以及安全的考慮引入了打包技術。在微軟的平台有早期的cab文件,以及以MSI為基礎的一系列離線安裝包製作工具,目前比較常用的有商用的InstallShield和免費的InnoSetup,而微軟本身也為了開發者提供了開發-分發-部署一站式的ClickOnce技術。對於MSI以及打包軟體的了解,可以下載他們的免費版本進一步了解。


推薦閱讀:

如何看待《三國殺》中描述複雜的武將?
暗黑2 的 IMPK 的營收大概是多少?利潤是?
怎麼利用多人、帳號、電腦等資源打金賺錢?
如何評價流放之路(path of exile)這款遊戲,與暗黑3相比優勢和缺陷在哪裡?
暗黑破壞神3是一個比較肝的遊戲嗎?

TAG:網路遊戲 | 編程 | 計算機 |