Wine全稱為Wine Is Not an Emulator,是一個能夠在多種 POSIX-compliant 操作系統(tǒng)(諸如 Linux,macOS 及 BSD 等)上運(yùn)行 Windows 應(yīng)用的兼容層。軟件不是像虛擬機(jī)或者模擬器一樣模仿內(nèi)部的 Windows 邏輯,而是將 Windows API 調(diào)用翻譯成為動態(tài)的 POSIX 調(diào)用,免除了性能和其他一些行為的內(nèi)存占用,讓你能夠干凈地集合 Windows 應(yīng)用到你的桌面。本站提供官方版,感興趣的用戶,歡迎來本站下載體驗(yàn)。
功能特色
1、它是一個Windows兼容層,通俗的講,就是一個Windows模擬器。
2、這個層即提供了一個用來從Windows源進(jìn)出到UNIX的開發(fā)工具包;
3、也提供了一個程序加載器,該加載器允許不用任何修改Windows 3.1/95/NT的二進(jìn)制文件,就可以運(yùn)行在Intel Unix及其衍生版本下。
4、可以工作在絕大多數(shù)的UNIX版本下、包括Linux、 FreeBSD 和 Solaris。
軟件說明
軟件是一個在Linux和UNIX之上的,Windows 3.x和 Windows APIs的實(shí)現(xiàn)。注意,這款軟件不是Windows模擬器,而是運(yùn)用API轉(zhuǎn)換技術(shù)實(shí)做出Linux對應(yīng)到Windows相對應(yīng)的函數(shù)來調(diào)用DLL以運(yùn)行Windows程序。軟件可以工作在絕大多數(shù)的UNIX版本下,包括Linux, FreeBSD, 和 Solaris。另外,也有適用于Mac OS X的程序。軟件不需要Microsoft Windows, 因?yàn)檫@是一個完全由百分之百的免費(fèi)代碼組成的。如果有可利用的副本的話,它也可以隨意地使用本地系統(tǒng)的DLLs。軟件的發(fā)布是完全公開源代碼的,并且是免費(fèi)發(fā)行的。(基于LGPL發(fā)布:GNU寬通用公共許可證)
關(guān)于真正含義,有人對“Wine Is Not an Emulator”的說法表示質(zhì)疑,認(rèn)為”非模擬器“的解釋不過是一種娛樂性的說法,軟件的真實(shí)意思應(yīng)當(dāng)是是Windows Environment的縮寫。
使用方法
Wine可以在絕大多數(shù)的Unix/Linux版本下工作,但其現(xiàn)在仍不能完全運(yùn)行所有的Windows程序。不過由于幾乎每個月都有新版本,越來越多的Windows程序已經(jīng)能在軟件的幫助下在Linux中運(yùn)行。
1、直接運(yùn)行程序
使用命令
2、使用程序管理器
啟動管理器窗口,從菜單中選擇 文件(F)-執(zhí)行(X),就會彈出一個目錄
瀏覽器,選擇程序即可。
3、直接雙擊 EXE 程序
一些發(fā)行版安裝時會自動關(guān)聯(lián)EXE程序,這樣直接雙擊可以運(yùn)行。
某些簡單程序可直接運(yùn)行,而不需要安裝。大部分Windows軟件的安裝,請由軟件打開安裝包(exe文件)然后和Windows下以同樣的方法安裝程序即可。這樣安裝的程序應(yīng)當(dāng)會在桌面環(huán)境的程序列表中自動添加快捷方式(和Windows下的快捷方式類似),選擇即可運(yùn)行程序。
▲注意:運(yùn)行某些程序,如MS Office、迅雷、QQ、某些游戲等的兼容性仍不完善。要正常使用此類軟件,可以以完全的虛擬機(jī)代替(如Virtualbox、VMWare),或者在網(wǎng)上搜索查找已知的解決方法或針對特定軟件的安裝包。
軟件可用性
可以做什么
本文中,我們討論的是軟件在純 Linux 上的安裝,沒有任何 Windows 分區(qū)。
1. Windows可執(zhí)行文件:
完全支持 Windows可執(zhí)行文件( .exe 和 DLL)的二進(jìn)制加載。
2. DLL:
有幾百個 Windows DLL 的內(nèi)部實(shí)現(xiàn) -- 不過,其中沒有多少是完全的實(shí)現(xiàn)。例如,包含有用戶界面相關(guān)函數(shù)的 userd32.dll 在開放源代碼中實(shí)現(xiàn)了 92%。
3. COM:
這是一種幾乎被所有的大型 Windows應(yīng)用程序所使用的 Windows 技術(shù),它支持諸如將一個 Excel 電子數(shù)據(jù)表嵌入到 Word 文檔中等功能。這一技術(shù)得到了很好的支持。
4. 注冊表:
這是另一個幾乎任何一個 Windows應(yīng)用程序都會使用的關(guān)鍵技術(shù),軟件實(shí)現(xiàn)了大約 90% 的 Windows 注冊表管理 API。
5. 核心功能:
核心系統(tǒng)功能也得到了特別好的支持。如前面提到的,盡管 Linux 和 Windows 之間存在區(qū)別,但是基本的層次上還有很多類似之處,因此與進(jìn)程、線程、文件和消息隊列相關(guān)的核心系統(tǒng) API 得到了近乎完美的支持。
6. 音頻和視頻:
支持 Windows 音頻和視頻文件的運(yùn)行(還可以使用 Windows媒體播放器)。
7. 打?。?br />也得到了支持,可以從一個運(yùn)行的 Windows應(yīng)用程序進(jìn)行打印。
8. ODBC:
支持那些需要通過 ODBC 訪問數(shù)據(jù)庫的 Windows 應(yīng)用程序。
9. 調(diào)試:
有一個非常健壯和強(qiáng)大的內(nèi)置調(diào)試器,除了支持標(biāo)準(zhǔn)的調(diào)試功能外,它還為調(diào)試運(yùn)行于 Linux 上的 Windows 二進(jìn)制程序進(jìn)行了定制。它是軟件為其開發(fā)者提供的最重要工具之一。軟件還有一個設(shè)計完備的追蹤和記錄日志的模塊,可以幫助調(diào)試。我們之所以強(qiáng)調(diào)這一點(diǎn),原因在于,盡管框架是健壯的,但是,當(dāng)在軟件中安裝和運(yùn)行 Windows應(yīng)用程序時有很多不確定因素,在使用開放源代碼時遲早會停下來進(jìn)行調(diào)試。
不能做什么
不幸的是,很多用戶發(fā)現(xiàn)軟件難于使用。誠然,在 Linux 上使用類似于 MS Office 這樣的應(yīng)用程序可能是困難的;在這里我們來看一些原因,為什么確實(shí)是這樣。在開始之前,我們應(yīng)該指出,CodeWeavers 提供的商用軟件(CrossOver)已經(jīng)解決了大部分此類問題(參閱參考資料以獲得鏈接)。假以時日,這些問題將可能在開放源代碼的軟件中同樣得到解決。
1. 使用命令行(早期版本)
與大部分 Linux 中的應(yīng)用程序一樣,在開發(fā)早期必須在命令行中安裝。用戶必須回到命令行中來在軟件下運(yùn)行應(yīng)用程序。例如,要運(yùn)行Internet Explorer,用戶通常需要在 shell 中輸入 wine IEXPLORE.EXE 。盡管經(jīng)驗(yàn)豐富的用戶喜歡這樣做,但初學(xué)者會發(fā)現(xiàn)這比較困難,而且不太可能懂得起別名等快捷方式。不過,在較新的版本中用戶也可以直接雙擊EXE文件運(yùn)行(如果進(jìn)行了關(guān)聯(lián))。盡管這樣會給查看錯誤信息帶來困難,但這無疑極大地方便了用戶的使用。
2. 配置
軟件的配置較為復(fù)雜。除了命令行,較新的版本已經(jīng)有了簡體中文的界面,對于初學(xué)者來說,配置簡單了不少。
3. 取消對隱藏文件的隱藏
如果掛載 CDROM 時沒有使用專門的 unhide 選項,那么安裝 CD 上的隱藏文件可能會無法找到,從而導(dǎo)致安裝失敗。
4. 額外的調(diào)整過程
軟件安裝很少能直接使用(對它來說也就是從 tarfile 解開)。通常需要進(jìn)行全面的調(diào)整;例如,一個程序的安裝可能與您在配置文件中設(shè)置的 Windows 版本不相容;而修改那個版本又可能會影響一些已安裝的應(yīng)用程序。對很多 DLL 來說也是如此。為此,軟件提供了一個巧妙的修復(fù),讓您可以設(shè)置特定于應(yīng)用程序的屬性,不過,一般的用戶可能不會像我們一樣滿意。
5. 額外的安裝步驟
大部分應(yīng)用程序的安裝過程都不是標(biāo)準(zhǔn)的。例如當(dāng)我們安裝 Internet Explorer 6 時,必須跳過一些步驟,比如 DCOM98 的定位與安裝。對用戶來說,這類事情可能是最大的障礙。
注意,這些并不是病癥,而是舉例說明了是哪些種類的事情導(dǎo)致對一般用戶來說看起來復(fù)雜而且困難。
更多軟件所不能做的
看完軟件的可用性問題后,讓我們來總結(jié)在嘗試使用時一些常見的技術(shù)問題。
1. 缺少 DLL
這可能是最常見的問題:很多安裝由于缺少 DLL 而失敗,這時需要熟練使用調(diào)試器來決定下一步(稍后將深入討論調(diào)試器)。解決問題的最佳方法是由錯誤信息尋找到所需的DLL,并進(jìn)行安裝。這些都可能難倒初學(xué)者。
2. DLL 版本問題
一些安裝程序在開始之前會檢查現(xiàn)有的系統(tǒng) DLL。軟件解決這一問題的方法是,創(chuàng)建假 DLL 以滿足安裝程序的需要。不過,有一些安裝程序會更進(jìn)一步并深入檢查 DLL 以獲得它們的版本。這對假的 DLL 來說要求太高了,會導(dǎo)致安裝失敗。
3. DLL 加載次序
有對很多 Windows DLL 的實(shí)現(xiàn),而且如果可用,它還可以使用原始的 Windows DLL。如果兩種 DLL 都可用,在初學(xué)者看來應(yīng)該選擇總是使用 Windows 自己的 DLL,但實(shí)際上 Windows DLL 有時會包含不能被滿足的依賴。要確定是更應(yīng)該使用DLL 還是應(yīng)該使用本機(jī) DLL,惟一的方法是,基于各個應(yīng)用程序反復(fù)進(jìn)行試驗(yàn)。
4. DLL 中的函數(shù)
當(dāng)一個 Wine DLL 沒有實(shí)現(xiàn) Windows 中相應(yīng)的 DLL 的全部功能時,應(yīng)用程序可能會遭遇函數(shù)調(diào)用失敗。由于 DLL 是動態(tài)加載的,可能沒有辦法事先知道會發(fā)生這樣的事情。這是一個復(fù)雜的問題,有一些可做的工作,但最終實(shí)際來說它只是取決于應(yīng)用程序的代碼如何編寫。
有一些因素會減輕這些問題。一方面,您可能會一個一個地遇到這些問題,而不是一次遇到全部問題,這樣處理起來要容易些。另外,您遇到的那些問題可能其他人曾遇到過并已經(jīng)解決(而且解決方案已經(jīng)公布出來)。用戶組非?;钴S,會提供許多幫助,每周一次時事通訊(參閱 參考資料)是極好的信息資源。
軟件中還沒有實(shí)現(xiàn)的 Win32 API
在軟件中,很多 Win32 API5 的函數(shù)是殘缺不全的。最常見的原因是,相當(dāng)多的 Win32 API 并沒有被文檔化。這就意味著一個特別的應(yīng)用程序可能會調(diào)用某個函數(shù),而完全沒有關(guān)于此函數(shù)的可用資料。例如,我們在運(yùn)行一個簡單的 RPC 程序時發(fā)現(xiàn)了 RtlAnsiCharToUnicodeChar 這個函數(shù)。在 MSDN 上的搜索結(jié)果顯示沒有關(guān)于這個函數(shù)的資料,而且沒有關(guān)于所有 RtlXXXX 類別函數(shù)的資料。因此,如果它們在軟件中的實(shí)現(xiàn)對一些應(yīng)用程序來說至關(guān)重要,那么人們可能只有去猜測它們的行為了。
更新日志
v4.12.1(2019-8-15)
1、使用MoltenVK對macOS的Vulkan支持。
2、初始支持注冊表中的性能數(shù)據(jù)。
3、Mono引擎更新了一些bug修復(fù)。
4、支持在Linux上獲取BIOS信息。
5、GnuTLS在macOS上也可用。
6、標(biāo)準(zhǔn)任務(wù)對話框的改進(jìn)。
7、各種各樣的bug修復(fù)。
0條評論