精華區beta Programming 關於我們 聯絡資訊
你只講到了一部分,除了 DLL 之外另外一個重要的原因 就是很多軟體都希望可以保留設定值,這樣當軟體移除 重新安裝或是 update 時可以到 registry 內去讀取設定值。 另外一個重點就是 DLL 不只是個 lib,他也是很多元件 的「載具」,像是 ActiveX,假如你不先作註冊動作, 使用到這些 ActiveX 的程式馬上當給你看,這也是安裝軟體 會幫你橋好的事之一,另外一個重點就是 database engine, 比方說 Borland BDE 就是一個例子,這也必須在執行軟體 前先裝好,所以會一併在安裝軟體時裝好。 不過凡事都有例外,實際上你也可以動態註冊 ActiveX, 手動安裝 database engine,把設定值存在 .ini ( or XML), 你也可以作個零安裝軟體,不過你自己就要處理很多細節了, 而且也並非每種開發工具都可以讓你這樣搞,比方說 VB 你要 這樣搞就不太可能。再者 Install Shield 都發展這麼完善了 作這種事實在投資報酬率太低了... ※ 引述《nothing.bbs@bbs.nfu.edu.tw (..)》之銘言: : ※ 引述《Aligu1009.bbs@ptt.cc (=.=)》之銘言: : > 我們平常寫C/C++, java等 : > 寫完後編譯產生執行 (或class) 檔 : > 然後就可以執行了 : > 但 為什麼一堆軟體都要有install的動作呢? : > install,然後才能執行 : > 直接有個執行檔給人點個兩下 開始動作 不也很直覺嗎? : > 為什麼會有install檔這樣的東西呢? 謝謝 : 這真是個有趣的問題:) : 你寫一個程式時,當程式在執行時會去 load 一些 DLL 檔 : 這些 DLL 檔可能是微軟 OS 提供的,或者是一些套裝軟體 : 提供的,比如 office,所以當你 compile 好你的程式之後 : 再把程式丟到另一台電腦執行,你可能會發現無法執行,因 : 為某個 DLL 找不到,當你把這個 msgbox 告訴你所欠缺的 : DLL copy 到你要執行的電腦時,幸運的話也許就正常執行 : 了,但如果不幸的話,它將會告訴你又欠缺了什麼 DLL 檔 : 這時候很可能你必須 copy 好幾個 DLL 檔你的程式才得以 : 執行 : 所以這時候如果你用一些工具把你的程式包裝成 setup.exe : 這個 setup.exe 它自己會去 check 這台電腦有哪些 DLL : 沒有裝上,它會幫你裝上。 : 比如你寫 DirectX 的遊戲,需要 DirectX Runtime Lib, : maybe 這台電腦用的是 DirectX 8,但你的電腦開發環境是 : DirectX 9,這時候如果你有用到一些 9 才有的 function : 問題就會產生了。但幸運的是,這時候我們口中的 setup.exe : 將會負責打理好這一切,包括版本的 check,安裝的過程中 : 若有需要也會尋問 user 是否 replace DLL : 如果只想要一個執行檔,比如只用 printf 或者你是用組合 : 語言開發的,只用到一些 OS 就會提供的 DLL,可能就不大 : 需要 install,但通常越高階的語言或開發工具就越會有 : dependency 的問題,而且通常也會越複雜。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.33.4