-
wine
(兼容層)
鎖定
Wine (“Wine Is Not an Emulator” 的縮寫)是一個能夠在多種 POSIX-compliant 操作系統(諸如 Linux,macOS 及 BSD 等)上運行 Windows 應用的兼容層。另外英語單詞wine是葡萄酒的意思。
Wine(Windows運行環境)是一個在Linux和UNIX之上的Windows 3.x和 Windows API (以下簡稱動態接口)的實現。注意,Wine不是模擬Windows的工具,而是運用API轉換技術實做出Linux對應到Windows相對應的函數來調用DLL(動態鏈接庫)以運行Windows程序。Wine可以工作在絕大多數的UNIX版本下,包括Linux, FreeBSD, 和 Solaris。另外,也有適用於Mac OS X的Wine程序。Wine不需要Microsoft Windows系統, 因為這是一個完全由百分之百的免費代碼組成的。如果有可利用的副本的話,它也可以隨意地使用本地系統的DLLs。Wine的發佈是完全公開源代碼的,並且是免費發行的。(基於LGPL發佈:GNU寬通用公共許可證)
- 中文名
- 葡萄酒
- 外文名
- Wine(Windows Environment)
- 別 名
- Wine Is Not an Emulator
- 語 種
- 英文
wine版本
可提供下載的一共有三個版本:
Stable branch | 穩定版(推薦) |
---|---|
Development branch | 開發版 |
Staging branch | 發行版 |
版本 | 版本類型 | 發佈日期 | 開源DLL | 開源API |
---|---|---|---|---|
1.0 | 穩定版 | 2008-05-27 | 266個 | 45個 |
1.2 | 穩定版 | 2010-07-16 | 368個 | 58個 |
1.4 | 穩定版 | 2012-03-07 | 427個 | 74個 |
1.6 | 穩定版 | 2013-07-18 | 464個 | 79個 |
1.7 | 開發版 | 2013-08-02 | - | - |
1.9.17 | 開發版 | 2016-08-07 | ||
1.8.4 | 穩定版 | 2016-08-24 | ||
1.8.7 | 發行版 | 2017-02-28 | ||
2.3 | 發行版 | 2017-03-03 | ||
2.4 | 發行版 | 2017-03-17 | ||
8.5 | - | |||
8.8 | ||||
8.9 |
wine其他版本
雖然可運行大部份視窗程序,但只能有限度地運行以DirectX所編寫的遊戲,亦即是很多遊戲不能在其運行
Wine的延伸計劃主要有兩大產品,一個是CodeWeavers開發的CrossOver,另一個是TransGaming Technologies的Cedega。
CrossOver Office以提供應用軟件支持為主,Cedega則鎖定在遊戲娛樂方面。CodeWeavers和Wine計劃一直保有密切的合作關係。CodeWeavers亦僱用了Alexandre Juillard以將CrossOver Office的源代碼回饋給Wine。在2005年6月22日,CodeWeavers 宣佈支持基於英特爾處理器的蘋果電腦。
Transgaming的Cedega則是商業軟件,以Wine為基礎,在Wine更換授權後停止使用Wine的源代碼,雖然有Cedega提供源代碼下載(經由CVS),但在不包含專利技術的情形下,功能與可用性都不高。
2023年1月,Wine 8.0 穩定版在發佈之後,Wine 8.1 已經進入開發階段。2月18日,Wine 8.2第二個雙週開發週期版本正式發佈。共計修復了 22 個已知錯誤,改進了包括 VBScript 在內的軟件、以及包括《魔法門之英雄無敵 IV 》、《恐懼虛空》等 Windows 遊戲。
[6]
2023年4月1日,Wine 8.5 正式發佈,這是進入雙週更新週期之後的第 5 個更新版本。本次更新最大的亮點在於整合了上週發佈的 VKD3D 1.7,在行業標準 Vulkan API 基礎上部署 Direct3D 12。
[8]
wine早期發展
Wine計劃是在1993年由Bob Amstadt及Eric Youngdale發起的,最初的目的是為了使16位的視窗3.1的程序可以在Linux上運行,但已將目的變為使32位的視窗程序在Linux上運行。
因為Windows的DLLs是封閉源代碼的,所以程序員只能由最底層的設計開始,耗費大量的時間來編寫和測試,最後達至兼容。但這個過程往往會有很多困難,而且亦可能會出現很多錯誤。
當Corel參加這個計劃後,Wine很快便能兼容WordPerfect Office,但Corel後來停止了支持這個計劃。
wine編譯安裝
如果你安裝了編譯所需要的軟件(如 gcc flex bison fontforge ),就可以進行編譯了。
首先,訪問官方網站下載最新版本的 Wine,解壓到一個目錄
打開終端("Terminal"),輸入以下命令:
cd <你解壓的目錄> #進入目錄
./configure # 檢查編譯環境 make #若上一步成功的話,即可進行編譯 make install #安裝
即可完成 Wine 的編譯。
▲注意:
1.編譯Wine一般需要一個小時(視機器性能而定),若你是剛剛接觸 Linux 不久的人,最好不要進行編譯。
2.編譯安裝出現問題,多半是軟件依賴沒有安裝,請留意輸出的錯誤信息。
3.建議能用軟件包(如.deb)安裝的就儘量別用源碼編譯安裝了,用軟件包安裝的可以通過包管理器進行版本管理,便於及時更新WIne,編譯安裝的就得靠你自己了(尤其是你裝了開發版本(Development branch)的Wine,不及時更新可能會有很多bug)
wine下載安裝
sudo apt-get install wine
請注意:由這種方法安裝的Wine通常不是最新版本。要獲取最新版,請使用由官方網站上下載安裝包、添加ppa源(針對Ubuntu用户)等方法或直接編譯安裝。
#如果你使用的是64位Ubuntu,則先要開啓32位安裝環境: sudo dpkg --add-architecture i386 #然後需要下載一個PGP公鑰以識別軟件倉庫: wget -nc #添加公鑰並添加軟件源: sudo apt-key add Release.key sudo apt-add-repository #更新軟件列表 sudo apt-get update #之後就可以選擇Wine版本安裝了: #穩定版(Stable branch)安裝命令 sudo apt-get install --install-recommends winehq-stable #開發版(Development branch)安裝命令 sudo apt-get install --install-recommends winehq-devel #發佈版(Staging branch)安裝命令 sudo apt-get install --install-recommends winehq-staging
wine配置
winecfg
運行後會讓你安裝一些必要插件,確認即可。
注意:Wine 1.1.27以上版本的 winecfg 已經是中文界面了。
最新版本的Wine已經可以模擬Windows 10的環境了
wine中文亂碼
Wine 1.1.4 以上版本的中文支持得到了極大改善。如果您在使用較低版本的WINE或者對WINE的中文支持不滿意,可以把下面文字保存為 zh.reg 文件,運行 wine regedit 導入它即可
REGEDIT4 [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes] "Arial"="WenQuanYi Zenhei" "Arial CE,238"="WenQuanYi Zenhei" "Arial CYR,204"="WenQuanYi Zenhei" "Arial Greek,161"="WenQuanYi Zenhei" "Arial TUR,162"="WenQuanYi Zenhei" "Courier New"="WenQuanYi Zenhei" "Courier New CE,238"="WenQuanYi Zenhei" "Courier New CYR,204"="WenQuanYi Zenhei" "Courier New Greek,161"="WenQuanYi Zenhei" "Courier New TUR,162"="WenQuanYi Zenhei" "FixedSys"="WenQuanYi Zenhei" "Helv"="WenQuanYi Zenhei" "Helvetica"="WenQuanYi Zenhei" "MS Sans Serif"="WenQuanYi Zenhei" "MS Shell Dlg"="WenQuanYi Zenhei" "MS Shell Dlg 2"="WenQuanYi Zenhei" "System"="WenQuanYi Zenhei" "Tahoma"="WenQuanYi Zenhei" "Times"="WenQuanYi Zenhei" "Times New Roman CE,238"="WenQuanYi Zenhei" "Times New Roman CYR,204"="WenQuanYi Zenhei" "Times New Roman Greek,161"="WenQuanYi Zenhei" "Times New Roman TUR,162"="WenQuanYi Zenhei" "Tms Rmn"="WenQuanYi Zenhei" #字體的添加路徑(只留一個你想要顯示的中文字體在這): ~/.wine/drive_c/windows/Fonts/
wine簡單方法
Wine可以在絕大多數的Unix/Linux版本下工作,但其仍不能完全運行所有的Windows程序。不過由於幾乎每個月都有新版本,越來越多的Windows程序已經能在Wine的幫助下在Linux中運行。
1、直接運行程序
使用命令 wine
[root@localhost root]#wine <程序名>
2、使用程序管理器
[root@localhost root]#progman
3、直接雙擊 EXE 程序
一些發行版安裝WINE時會自動關聯EXE程序,這樣直接雙擊可以運行。
某些簡單程序可直接運行,而不需要安裝。大部分Windows軟件的安裝,請由Wine打開安裝包(exe文件)然後和Windows下以同樣的方法安裝程序即可。這樣安裝的程序應當會在桌面環境的程序列表中自動添加快捷方式(和Windows下的快捷方式類似),選擇即可運行程序。
單擊右鍵,選擇打開方式也可以選擇Wine打開。
▲注意:Wine運行某些程序,如MS Office、迅雷、QQ、某些遊戲等的兼容性仍不完善。要正常使用此類軟件,可以以完全的虛擬機代替(如Virtualbox、VMware),或者在網上搜索查找已知的解決方法或針對特定軟件的安裝包。
wine可用性
可以做什麼
本文中,我們討論的是 Wine 在純 Linux 上的安裝,沒有任何 Windows 分區。
1. Windows可執行文件:
Wine 完全支持 Windows可執行文件( .exe 和 DLL)的二進制加載。
2. DLL:
3. COM:
4. 註冊表:
5. 核心功能:
核心系統功能也得到了特別好的支持。如前面提到的,儘管 Linux 和 Windows 之間存在區別,但是基本的層次上還有很多類似之處,因此與進程、線程、文件和消息隊列相關的核心系統 API 得到了支持。
6. 音頻和視頻:
7. 打印:
也得到了支持,可以從一個在 Wine 中運行的 Windows應用程序進行打印。
8. ODBC:
Wine 支持那些需要通過 ODBC 訪問數據庫的 Windows 應用程序。
9. 調試:
Wine 有一個非常健壯和強大的內置調試器,除了支持標準的調試功能外,它還為調試運行於 Linux 上的 Windows 二進制程序進行了定製。它是 Wine 為其開發者提供的最重要工具之一。Wine 還有一個設計完備的追蹤和記錄日誌的模塊,可以幫助調試。我們之所以強調這一點,原因在於,儘管框架是健壯的,但是,當在 Wine 中安裝和運行 Windows應用程序時有很多不確定因素,在使用開放源代碼的 Wine 時遲早會停下來進行調試。
不能做什麼
不幸的是,很多用户發現 Wine 難於使用。誠然,在 Linux 上使用類似於 MS Office 這樣的應用程序可能是困難的;在這裏我們來看一些原因,為什麼確實是這樣。在開始之前,我們應該指出,CodeWeavers 提供的商用 Wine (CrossOver)已經解決了大部分此類問題(參閲參考資料以獲得鏈接)。假以時日,這些問題將可能在開放源代碼的 Wine 中同樣得到解決。
1. 使用命令行(早期版本)
與大部分 Linux 中的應用程序一樣,在開發早期 Wine 必須在命令行中安裝。用户必須回到命令行中來在 Wine 下運行應用程序。例如,要運行Internet Explorer,用户通常需要在 shell 中輸入 wine IEXPLORE.EXE 。儘管經驗豐富的用户喜歡這樣做,但初學者會發現這比較困難,而且不太可能懂得起別名等快捷方式。不過,在較新的版本中用户也可以直接雙擊EXE文件運行(如果進行了關聯)。儘管這樣會給查看錯誤信息帶來困難,但這無疑極大地方便了用户的使用。
2. 配置
Wine 的配置較為複雜。除了命令行,較新的版本已經有了簡體中文的界面,對於初學者來説,配置簡單了不少。
3. 取消對隱藏文件的隱藏
如果掛載 CDROM 時沒有使用專門的 unhide 選項,那麼安裝 CD 上的隱藏文件可能會無法找到,從而導致安裝失敗。
4. 額外的調整過程
Wine 安裝很少能直接使用(對它來説也就是從 tarfile 解開)。通常需要進行全面的調整;例如,一個程序的安裝可能與您在配置文件中設置的 Windows 版本不相容;而修改那個版本又可能會影響一些已安裝的應用程序。對很多 DLL 來説也是如此。為此,Wine 提供了一個巧妙的修復,讓您可以設置特定於應用程序的屬性,不過,一般的用户可能不會像我們一樣滿意。
5. 額外的安裝步驟
大部分應用程序的安裝過程都不是標準的。例如當我們安裝 Internet Explorer 6 時,必須跳過一些步驟,比如 DCOM98 的定位與安裝。對用户來説,這類事情可能是最大的障礙。
注意,這些並不是病症,而是舉例説明了是哪些種類的事情導致對一般用户來説 Wine 看起來複雜而且困難。
更多 Wine 所不能做的
看完 Wine 的可用性問題後,讓我們來總結在嘗試使用 Wine 時一些常見的技術問題。
1. 缺少 DLL
這可能是最常見的問題:很多安裝由於缺少 DLL 而失敗,這時需要熟練使用調試器來決定下一步(稍後將深入討論調試器)。解決問題的最佳方法是由錯誤信息尋找到所需的DLL,並進行安裝。這些都可能難倒初學者。
2. DLL 版本問題
一些安裝程序在開始之前會檢查現有的系統 DLL。Wine 解決這一問題的方法是,創建假 DLL 以滿足安裝程序的需要。不過,有一些安裝程序會更進一步並深入檢查 DLL 以獲得它們的版本。這對假的 DLL 來説要求太高了,會導致安裝失敗。
3. DLL 加載次序
Wine 有對很多 Windows DLL 的實現,而且如果可用,它還可以使用原始的 Windows DLL。如果兩種 DLL 都可用,在初學者看來應該選擇總是使用 Windows 自己的 DLL,但實際上 Windows DLL 有時會包含不能被滿足的依賴。要確定是更應該使用 Wine 的 DLL 還是應該使用本機 DLL,惟一的方法是,基於各個應用程序反覆進行試驗。
4. DLL 中的函數
當一個 Wine DLL 沒有實現 Windows 中相應的 DLL 的全部功能時,應用程序可能會遭遇函數調用失敗。由於 DLL 是動態加載的,可能沒有辦法事先知道會發生這樣的事情。這是一個複雜的問題,有一些可做的工作,但最終實際來説它只是取決於應用程序的代碼如何編寫。
有一些因素會減輕這些問題。一方面,您可能會一個一個地遇到這些問題,而不是一次遇到全部問題,這樣處理起來要容易些。另外,您遇到的那些問題可能其他人曾遇到過並已經解決(而且解決方案已經公佈出來)。Wine 用户組非常活躍,會提供許多幫助,每週一次的 Wine 時事通訊(參閲 參考資料)是不錯的信息資源。
Wine 還未實現的 Win32 API
在 Wine 中,很多 Win32 API5 的函數是殘缺不全的。最常見的原因是,相當多的 Win32 API 並沒有被文檔化。這就意味着一個特別的應用程序可能會調用某個函數,而完全沒有關於此函數的可用資料。例如,我們在運行一個簡單的 RPC 程序時發現了 RtlAnsiCharToUnicodeChar 這個函數。在 MSDN 上的搜索結果顯示沒有關於這個函數的資料,而且沒有關於所有 RtlXXXX 類別函數的資料。因此,如果它們在 Wine 中的實現對一些應用程序來説至關重要,那麼人們可能只有去猜測它們的行為了。
- 參考資料
-
- 1. 安裝wineHQ安裝包 .wineHQ wiki[引用日期2019-10-05]
- 2. Wine Wiki .WineHQ[引用日期2018-01-02]
- 3. Ubuntu - WineHQ Wiki .WineHQ Wiki[引用日期2017-12-31]
- 4. Windows 兼容層 Wine 8.0 首個候選版本發佈,優化對 Vulkan 和 OpenGL 的支持 .科技.2022-12-10
- 5. Wine 8.0 正式版發佈:更好支持在 Linux 等系統上運行 Windows 應用程序 - IT之家 .其他[引用日期2023-01-25]
- 6. Wine 8.2 發佈:增強 Wow64 模式下的調試信息,允許 32 位 PE 模塊調用 64 位 Unix 庫 - .IT之家.2023-02-18[引用日期2023-02-18]
- 7. Wine 8.2 發佈:增強 Wow64 模式下的調試信息,允許 32 位 PE 模塊調用 64 位 Unix 庫 - IT之家 .IT之家[引用日期2023-02-18]
- 8. Wine 8.5 發佈:整合 VKD3D 1.7、修復 21 處 BUG - IT之家 .IT之家.2023-04-01[引用日期2023-04-01]
- 9. Wine 8.8 發佈,初步支持 ARM64EC 模塊 .IT之家.2023-05-13[引用日期2023-05-13]
- 10. Wine 8.9 發佈:進一步整合 Wine Wayland 代碼 .IT之家.2023-05-27[引用日期2023-05-27]