這是我使用wine的指南,關(guān)于wine的知識(shí)很多都是在這份指南學(xué)到的 我現(xiàn)在重新整理了下,希望對(duì)大家有幫助 翻譯作者:HonestQiao 原文(官方):http://www./Docs/wine-user/ 原文(簡(jiǎn)體中文):http://linux./bbs/viewthre ... tid=610366 -------------------------------------------------------------------------------- 目錄 1. 介紹 1.1. Wine 是什么? 1.1.1. Windows 和 Linux 1.1.2. 模擬與本地連接 1.2. Wine 要求和特征 1.2.1. 系統(tǒng)要求 1.2.2. Wine 的功能 2. 獲得 Wine 2.1. Wine 的多種形式 2.2. 為 Debian 系統(tǒng)獲得 Wine 2.3. 為 Redhat 系統(tǒng)獲得 Wine 2.4. 為其他發(fā)布獲得 Wine 2.5. 從 FTP 歸檔獲得 Wine 源代碼 2.6. 從 CVS 獲得 Wine 源代碼 2.7. 用補(bǔ)丁更新 Wine 3. 安裝/編譯 Wine 3.1. WWN#52 特征: 替代 Windows 3.1.1. 安裝概述 3.1.2. 注冊(cè)表 3.1.3. 目錄結(jié)構(gòu) 3.1.4. 系統(tǒng) DLL 3.2. 安裝 Wine 而無(wú)須 Windows 3.3. 處理 FAT/VFAT 分區(qū) 3.3.1. 介紹 3.3.2. 以 root 運(yùn)行 Wine 3.3.3. 掛裝 FAT 文件系統(tǒng) 3.3.4. 隱蔽 FAT 文件系統(tǒng) 3.4. SCSI 支持 3.4.1. Windows 要求 3.4.2. LINUX 要求 3.4.3. 一般信息 3.4.4. 注意/缺陷 4. 配置 Wine 4.1. 一般配置 4.1.1. Wine 配置文件 4.1.2. 我如何做一個(gè)? 4.1.3. 我把它放在哪里? 4.1.4. 如果它不工作怎么辦? 4.2. Win95/98 外觀 4.3. 配置 x11drv 驅(qū)動(dòng)器 4.3.1. x11drv 操作模式 4.3.2. [x11drv] 段 4.4. 注冊(cè)表 4.4.1. 注冊(cè)表結(jié)構(gòu) 4.4.2. 使用 Windows 注冊(cè)表 4.4.3. Wine 注冊(cè)表數(shù)據(jù)文件 4.4.4. 系統(tǒng)管理 4.4.5. 缺省的注冊(cè)表 4.4.6. [registry] 段 4.5. wine 的驅(qū)動(dòng)器標(biāo)簽和系列號(hào) 4.5.1. 支持什么? 4.5.2. 如何設(shè)置? 4.5.3. 例子 4.5.4. 要做/開(kāi)放的要點(diǎn) 4.6. Dll 加載 4.6.1. DLL 類型 4.6.2. [DllDefaults] 段 4.6.3. [DllPairs] 段 4.6.4. [DllOverrides] 段 4.7. 鍵盤 4.8. 處理字體 4.8.1. 字體 4.8.2. 設(shè)置一個(gè) TrueType 字體服務(wù)器 4.9. 在 Wine 中打印 4.9.1. 打印 4.9.2. Wine 的 PostScript 驅(qū)動(dòng)程序 5. 運(yùn)行 Wine 5.1. 如何運(yùn)行 Wine 5.2. 命令行選項(xiàng) 5.2.1. --debugmsg [通道] 5.2.2. --desktop [幾何] 5.2.3. --display 5.2.4. --dll 5.2.5. --dosver 5.2.6. --help 5.2.7. --language 5.2.8. --managed 5.2.9. --synchronous 5.2.10. --version 5.2.11. --winver 6. 找出和報(bào)告缺陷 6.1. 如何報(bào)告一個(gè)缺陷 6.1.1. 容易的方式 6.1.2. 困難的方式 6.1.3. 問(wèn)題和注釋 第 1 章. 介紹 目錄 1.1. Wine 是什么? 1.2. Wine 要求和特征 1.1. Wine 是什么? 編寫: John R. Sheets <jsheets@codeweavers.com>; 1.1.1. Windows 和 Linux 許多人面臨著擁有的軟件不能在他的計(jì)算機(jī)上運(yùn)行的困擾。隨著 Linux 近來(lái)的流行,因?yàn)椴僮飨到y(tǒng)的不同而發(fā)生的更加頻繁。你的 Windows 軟件不能在 Linux 上運(yùn)行,而你的 Linux 軟件不能在 Windows 上運(yùn)行。 對(duì)這個(gè)問(wèn)題的一個(gè)常見(jiàn)的解決方法是在一個(gè)計(jì)算機(jī)上同時(shí)安裝這兩個(gè)操作系統(tǒng),成為一個(gè) "雙引導(dǎo)" 系統(tǒng)。如果你想在 MS Word 中寫一個(gè)文檔,你可以啟動(dòng) Windows;如果你想運(yùn)行 GnuCash,一個(gè) GNOME 財(cái)務(wù)應(yīng)用程序,你可以關(guān)閉你 Windows 任務(wù) (session)并重啟動(dòng)到 Linux。問(wèn)題是你不能同時(shí)使用它們。每次在 MS Word 和 GnuCash 之間前后切換,你必須再次重啟動(dòng)。很快就會(huì)厭倦的。 如果你可以在同一個(gè)系統(tǒng)上運(yùn)行所有你的程序,而不管它們是為 Windows 還是 Linux 寫的,生活就容易多了。在 Windows 上,這實(shí)際上不可能。[1] 但是,Wine 使在 Linux (或 Solaris)上同時(shí)運(yùn)行本地 Windows 應(yīng)用程序和本地 Linux 應(yīng)用程序成為可能。你可以在 MS Word 和 GnuCash 之間共享桌面空間,交疊窗口,圖標(biāo)化它們,甚至從同一個(gè)啟動(dòng)項(xiàng)(launcher)運(yùn)行它們。 1.1.2. 模擬與本地連接 Wine 是 win32 庫(kù)的一個(gè) UNIX 實(shí)現(xiàn),由上百個(gè)志愿開(kāi)發(fā)者從頭(from scratch)寫成并在一個(gè)開(kāi)放源代碼許可之下發(fā)行。任何人都可以下載并閱讀源代碼,并修理存在的缺陷。Wine 社區(qū)眾多有才干的程序員在增進(jìn) Wine 上花費(fèi)了上千個(gè)小時(shí)的個(gè)人時(shí)間,所以它可以很好的與 win32 應(yīng)用編程接口(API)一起工作,并保持與 Microsoft 相同的開(kāi)發(fā)步調(diào)。 Wine 可以用兩種不同的方式運(yùn)行應(yīng)用程序: 作為預(yù)編譯的 Windows 二進(jìn)制程序,或作為本地編譯的 X11 (X Window 系統(tǒng)) 應(yīng)用程序。前面的方法使用模擬把一個(gè) Windows 應(yīng)用程序和連接到 Wine 庫(kù)上。通過(guò) Wine 安裝或簡(jiǎn)單的把 Windows 可執(zhí)行文件復(fù)制到你的 Linux 系統(tǒng)上,你可以用模擬器直接運(yùn)行你的 Windows 應(yīng)用程序。 用 Wine 運(yùn)行 Windows 應(yīng)用程序的另一種方法需要擁有這個(gè)應(yīng)用的源代碼。不用本地 Windows 編譯器編譯它,象對(duì)其他 UNIX 應(yīng)用程序所做的那樣,你要用本地 Linux 編譯器編譯它 -- 例如 gcc -- 并連接上 Wine 庫(kù)。這些本地連接的應(yīng)用程序被稱為 Winelib 應(yīng)用程序。 Wine 用戶指南將關(guān)注于使用 Wine 模擬器運(yùn)行預(yù)編譯的 Windows 應(yīng)用程序。Winelib 用戶指南將覆蓋 Winelib 應(yīng)用程序。 注釋 [1] 從技術(shù)的角度上,如果你有兩個(gè)連網(wǎng)的計(jì)算機(jī),一個(gè)運(yùn)行 Windows 而另一個(gè)運(yùn)行 Linux,并且你在這個(gè) Windows 系統(tǒng)上運(yùn)行了某種 X 服務(wù)器軟件,你可以把 Linux 應(yīng)用程序?qū)С龅?Windows 系統(tǒng)上。不幸的是,多數(shù)正規(guī)的 win32 X 服務(wù)器是商業(yè)產(chǎn)品,它們通常都很貴。如果你只有一個(gè)計(jì)算機(jī)那么這種方案就解決不了問(wèn)題。 1.2. Wine 要求和特征 編寫:Andreas Mohr <amohr@codeweavers.com>; 1.2.1. 系統(tǒng)要求 要運(yùn)行 Wine 需要滿足下列條件: 一臺(tái)計(jì)算機(jī) Wine: 目前只支持 PCs >;= i386。Winelib: 可支持其他平臺(tái),但有點(diǎn)困難。 一個(gè) UNIX 類的操作系統(tǒng)如 Linux、*BSD、Solaris x86。 >;= 16MB 的 RAM。在此之下所有東西都是不可用的?!傲己谩钡膱?zhí)行需要 >;= 64 MB。 一個(gè) X11 window 系統(tǒng)(XFree86 等)。Wine 為其他圖形顯示驅(qū)動(dòng)器做了準(zhǔn)備,但寫支持不是很容易的。文本控制臺(tái)顯示驅(qū)動(dòng)器基本上是可用的。 1.2.2. Wine 的功能 希望你已經(jīng)設(shè)法完全滿足了上述要求?,F(xiàn)在我們告訴你 Wine 能做/支持的: 支持執(zhí)行 DOS、Win 3.x 和 Win9x/NT/Win2000 程序(支持多數(shù) Win32 的控件) 選擇使用外部廠商的 DLL(比如,原始的 Windows DLL) 基于 X11 的圖形顯示器(到任何可能的 X 終端的遠(yuǎn)程顯示器),文本模式控制臺(tái) Desktop-in-a-box 或可混合的窗口 對(duì)游戲的非常高級(jí)的 DirectX 支持 對(duì)聲音的良好支持,可替換(alternative)的輸入設(shè)備 打印機(jī): 支持固有 Win16 打印機(jī)驅(qū)動(dòng)程序,內(nèi)部 PostScript 驅(qū)動(dòng)程序 支持調(diào)制解調(diào)器、串行設(shè)備 Winsock TCP/IP 連網(wǎng) ASPI 接口 (SCSI) 支持掃描儀、CD 刻錄機(jī) ... Unicode 支持,相對(duì)高級(jí)的語(yǔ)言支持 Wine 調(diào)試器和可配置的跟蹤日志消息 第 2 章. 獲得 Wine 目錄 2.1. Wine 的多種形式 2.2. 為 Debian 系統(tǒng)獲得 Wine 2.3. 為 Redhat 系統(tǒng)獲得 Wine 2.4. 為其他發(fā)布獲得 Wine 2.5. 從 FTP 歸檔獲得 Wine 源代碼 2.6. 從 CVS 獲得 Wine 源代碼 2.7. 用補(bǔ)丁更新 Wine 2.1.Wine 的多種形式 標(biāo)準(zhǔn) Wine 發(fā)布包括許多不同的可執(zhí)行、庫(kù)、和配置文件。要使 Wine 良好的工作必須正確的設(shè)置所有這些文件。本章將指導(dǎo)你通過(guò)必要的步驟把 Wine 安裝到你的系統(tǒng)上。 如果你運(yùn)行的 Linux 的發(fā)行使用包來(lái)跟蹤安裝的軟件,你可能走運(yùn)了: Wine 的一個(gè)預(yù)編譯的版本可能已經(jīng)存在于你的系統(tǒng)中了。前三節(jié)將告訴你如何找到最新的 Wine 包并安裝它們。你應(yīng)該小心在不同的發(fā)布之間混用包,即使是同一個(gè)發(fā)布的不同版本之間。經(jīng)常是一個(gè)包只能在它所編譯的發(fā)布上運(yùn)行。我們將覆蓋 Debian、Redhat 和其他發(fā)布。 如果你不夠幸運(yùn)的獲得給你的操作系統(tǒng)的一個(gè)包,或者你偏好一個(gè)新版本的 Wine,它比現(xiàn)存的包要新,你必須下載 Wine 源代碼并在你自己的機(jī)器上親自編譯它。不要擔(dān)心,這不是很難,特別是與 Wine 一起的還有許多有用的工具。你無(wú)須有任何編程經(jīng)驗(yàn)來(lái)編譯和安裝 Wine,但有一些 UNIX 管理經(jīng)驗(yàn)就更好了。我們將覆蓋如何從 FTP 歸檔取回并編譯官方源代碼,還有如何從 CVS (并發(fā)版本系統(tǒng))獲得最新 (cutting edge up-to-the-minute fresh)的 Wine 源代碼。二者的源代碼安裝的過(guò)程是類似的,并且你一旦掌握了其中一個(gè),你處理另一個(gè)應(yīng)當(dāng)沒(méi)有任何問(wèn)題。 最后,你可能有一天需要知道如何向你的 Wine 版本提供補(bǔ)丁??赡苣阏业搅?Wine 中的一個(gè)未發(fā)現(xiàn)的缺陷,請(qǐng)向 Wine 郵件列表報(bào)告,并從某個(gè)開(kāi)發(fā)者接受一個(gè)補(bǔ)丁來(lái)修理這個(gè)缺陷。本章的最后一段將告訴你如何安全的提供補(bǔ)丁以及如果補(bǔ)丁不工作如何復(fù)原。[/color] 2.2. 為 Debian 系統(tǒng)獲得 Wine 在 Debian 系統(tǒng)的多數(shù)情況下,你可以用一個(gè)簡(jiǎn)單的命令安裝 Wine,作為 root: # apt-get install wine apt-get 將通過(guò) Internet 連接到一個(gè) Debian 歸檔(所以,你必須在線),接著下載 Wine 包并安裝到你的系統(tǒng)上。完事了。 當(dāng)然,Debian 的 Wine 預(yù)打包的版本可能不是最新的發(fā)行。如果你運(yùn)行 Debian 的穩(wěn)定版本,你可以通過(guò)從不穩(wěn)定發(fā)布獲取包來(lái)得到一個(gè)稍微新點(diǎn)的 Wine 版本,但這可能有點(diǎn)冒險(xiǎn),依賴于不穩(wěn)定發(fā)布從穩(wěn)定發(fā)布分叉多遠(yuǎn)。你可以在 www. 使用包查找引擎找到給各種 Debian 發(fā)行的 Wine 二進(jìn)制包的一個(gè)列表。 如果要安裝的一個(gè)包不是你的發(fā)布的一部分,你需要使用 dpkg 而不是 apt-get。因?yàn)?dpkg 不為你下載文件,你必須自己下載。依從在包查找引擎上的鏈接找到所需的包,接著點(diǎn)擊 Go To Download 頁(yè)面按鈕并依從指示。保存文件到你的硬盤,接著在其上運(yùn)行 dpkg。例如,如果你把文件保存到你的主目錄中,你可以進(jìn)行下列動(dòng)作來(lái)安裝它: $ su - <鍵入 root 口令>; # cd /home/user # dpkg -i wine_0.0.20000109-3.deb 你可能還需要安裝 wine-doc 包,如果你使用 Wine 的 2.3 發(fā)布(Woody),則還需要 wine-utils 包。[/color] 2.3. 為 Redhat 系統(tǒng) 獲得 Wine Redhat/RPM 用戶可以使用 rpmfind.net 來(lái)搜尋可獲得的 Wine RPM 二進(jìn)制包。 這個(gè)頁(yè)面包含以字母"W"開(kāi)頭的所有 rpm 包的一個(gè)列表,包括一些 Wine 包。[/color] 2.4. 為其他發(fā)布獲得 Wine 如果你的系統(tǒng)不是 Debian 或 Redhat,第一步是看 WineHQ 下載頁(yè)。這個(gè)頁(yè)面列出了許多 Wine 的分類混合的(assorted)二進(jìn)制(預(yù)編譯)歸檔文件。 Lycos FTPSearch 是搜尋雜類發(fā)布包的另一個(gè)有用的資源。 2.5. 從 FTP 歸檔獲得 Wine 源代碼 如果你想要的 Wine 的版本沒(méi)有現(xiàn)存的包,你可以自己下載源代碼并在你的機(jī)器上編譯它。如果以前從未做過(guò),第一次時(shí)可能感覺(jué)有點(diǎn)恐怖,你將發(fā)現(xiàn)這通常是非常順暢的,特別是在新近的 Linux 發(fā)布上。 獲得源代碼的最安全的方式是從官方 FTP 歸檔獲取。在 Wine 發(fā)布中的 ANNOUNCE 文件中(如果你已經(jīng)下載了它的話)有一個(gè)最新列表。下面是(可能過(guò)時(shí)了)承載 Wine 的 FTP 服務(wù)器的一個(gè)列表: ftp://metalab.unc.edu/pub/Linux/ALPHA/wine/development/ ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/ ftp://ftp.infomagic.com/pub/mirrors/lin ... velopment/ ftp://orcus.progsoc.uts.edu.au/pub/Wine/development/ 官方發(fā)布加上了"Wine-YYYYMMDD.tar.gz"格式的日期標(biāo)注。你最好的賭注是獲得最新的發(fā)布。 FIXME: 解釋如何 un-tar、從一個(gè) tarball 編譯和安裝 Wine。[/color] 2.6. 從 CVS 獲得 Wine 源代碼 Wine CVS 的官方 Web 頁(yè)是 http://www./dev.html。 首先,你需要使用 CVS 得到最新的 Wine 源代碼的一個(gè)復(fù)件。你可以通過(guò)設(shè)置 CVSROOT 環(huán)境變量來(lái)告訴它到那里去找到源代碼樹。你還必須匿名登錄到 wine CVS 服務(wù)器上。在 bash 中,過(guò)程可能如下: $ export CVSROOT=:pserver:cvs@cvs.:/home/wine $ cvs login Password: cvs $ cvs checkout wine 這將從 取回整個(gè) Wine 源代碼樹并把它放置到當(dāng)前目錄中(實(shí)際上在‘wine’子目錄中 )。 CVS 有大量命令行參數(shù),所以有多種方式從修訂歷史中的某個(gè)地方取回文件。此后,你可以只獲取更新的文件: $ cvs -dP update cvs update 從源代碼樹的內(nèi)部工作。你不需要 CVSROOT 環(huán)境變量來(lái)運(yùn)行它。你只需要在代碼樹中。-d 和 -P 選項(xiàng)確保你的本地 Wine 樹目錄結(jié)構(gòu)與遠(yuǎn)程倉(cāng)庫(kù)相同步。 在你做了變動(dòng)之后,你可以通過(guò) cvs diff -u 建立一個(gè)補(bǔ)丁,它把輸出發(fā)送的 stdout(-u 控制這個(gè)補(bǔ)丁的格式)。所以,要建立一個(gè) my_patch.diff 文件,你可以這樣做: $ cvs diff -u >; my_patch.diff 你可以從樹中的任何地方調(diào)用 cvs diff(如同 cvs update),并且它將總是從這一點(diǎn)上遞歸的獲取文件。你還可以指定一個(gè)單一的文件或子目錄: $ cvs diff -u dlls/winaspi >; my_aspi_patch.diff 做點(diǎn)實(shí)驗(yàn),這是非常憑直覺(jué)的。 2.7. 用補(bǔ)丁更新 Wine 如果你有 Wine 源代碼,與二進(jìn)制發(fā)布相反,你可以選擇向源代碼樹提供補(bǔ)丁來(lái)修理缺陷并增加實(shí)驗(yàn)性的特征??赡苣阋呀?jīng)發(fā)現(xiàn)了一個(gè)缺陷,請(qǐng)向 Wine 郵件列表報(bào)告,并接收一個(gè)補(bǔ)丁來(lái)修理這個(gè)缺陷。你可以用 patch 命令運(yùn)用補(bǔ)丁,它從 stdin 接受補(bǔ)丁: $ cd wine $ patch -p0 < ../patch_to_apply.diff 要?jiǎng)h除補(bǔ)丁使用 -R 選項(xiàng): $ patch -p0 -R < ../patch_to_apply.diff 如果你想要測(cè)試一下是否成功的提供了補(bǔ)丁(例如,如果這個(gè)補(bǔ)丁是從這個(gè)樹的(比當(dāng)前)老或新的版本建立的),你可以使用 --dry-run 參數(shù)來(lái)運(yùn)行補(bǔ)丁而不寫任何文件: $ patch -p0 --dry-run < ../patch_to_apply.diff patch 是從一個(gè)文件中提取補(bǔ)丁的聰明的方法,所以如果你保存了一封郵件,其中包含了給你的硬驅(qū)動(dòng)器上的一個(gè)文件的內(nèi)置(inline)的補(bǔ)丁,你可以在其上調(diào)用補(bǔ)丁而不須剝除郵件頭部和其他文本。 patch 忽略看起來(lái)不象補(bǔ)丁的所有東西。 FIXME: 進(jìn)一步解釋 -p0 選項(xiàng)... 第 3 章. 安裝/編譯 Wine 目錄 3.1. WWN #52 特征: 替代 Windows 3.2. 安裝 Wine 而無(wú)須 Windows 3.3. 處理 FAT/VFAT 分區(qū) 3.4. SCSI 支持 如何安裝 Wine... 3.1. WWN #52 特征: 替代 Windows 編寫: Ove Ken <ovek@>; 3.1.1. 安裝概述 一個(gè) Windows 安裝由許多不同部分組成。 注冊(cè)表。即使在一個(gè)新安裝的 Windows 系統(tǒng)中,都假定存在許多鍵并包含著有意義的數(shù)據(jù)。 目錄結(jié)構(gòu)。應(yīng)用程序期望在指定的預(yù)先決定的位置找到和/或安裝東西。期望多數(shù)這些目錄存在。但與 Unix 目錄結(jié)構(gòu)不同,多數(shù)這些位置是硬編碼的(hardcode),并通過(guò) Windows API 和注冊(cè)表來(lái)查找。在 Wine 安裝上這提出了額外的要求。 系統(tǒng) DLL。在 Windows 中,它們通常駐留在 system (或 system32)目錄中。一些 Windows 應(yīng)用程序在嘗試裝載它們之前在這些目錄中檢查它們的存在。當(dāng)應(yīng)用程序要求一個(gè) DLL 而 Wine 不能裝載它們自己的內(nèi)部 DLL(.so 文件)時(shí),Wine 不模擬不存在文件的存在。 盡管用戶可以自由的自己設(shè)置所有的東西,Wine 小組仍將制作自動(dòng) Wine 安裝腳本 tools/wineinstall,做我們認(rèn)為必要的所有事情;除非你知道正在做什么,否則不推薦運(yùn)行常規(guī)的 configure && make depend && make && make install 周期。此時(shí),可使用 tools/wineinstall 來(lái)建立一個(gè)配置文件、安裝注冊(cè)表、并建立自己的目錄結(jié)構(gòu)。 3.1.2. 注冊(cè)表 缺省的注冊(cè)表在文件 winedefault.reg 中。它包含目錄路徑、類 ID、及其他東西;在多數(shù) INSTALL.EXE 或 SETUP.EXE 運(yùn)行之前必須安裝它。在以前的文章中有對(duì)注冊(cè)表非常詳細(xì)的介紹。 3.1.3. 目錄結(jié)構(gòu) 下面是 Windows 應(yīng)用程序和安裝器所期望的基本格局。沒(méi)有它,這些程序不能正確操作。 C:\ 主磁盤驅(qū)動(dòng)器的根目錄 Windows\ Windows 目錄,包含 .INI 文件、附件等 System\ Win3.x/95/98/ME 給公用 DLL 的目錄 WinNT/2000 給公用 16-bit DLL 的目錄 System32\ WinNT/2000 給公用 32-bit DLL 的目錄 Start Menu\ 程序啟動(dòng)項(xiàng)目錄結(jié)構(gòu) Programs\ 到應(yīng)用程序的程序啟動(dòng)項(xiàng)連接(.LNK 文件) Program Files\ 應(yīng)用程序二進(jìn)制文件(.EXE 和 .DLL 文件) Wine 通過(guò)把它們的虛擬驅(qū)動(dòng)器根放置到 Unix 文件系統(tǒng)中用戶可配置點(diǎn)上來(lái)模擬驅(qū)動(dòng)器,所以你自己選擇 C: 的根應(yīng)該在哪 (tools/wineinstall 會(huì)問(wèn)你的)。如果你選擇了,比如 /var/wine 作為你的虛擬驅(qū)動(dòng)器 C 的根,則你應(yīng)該把它放置到你的 ~/.wine/config 文件中: [Drive C] "Path" = "/var/wine" "Type" = "hd" "Label" = "MS-DOS" "Filesystem" = "win95" 使用這個(gè)配置,被 windows 應(yīng)用程序當(dāng)作為 "c:\windows\system" 的目錄將被映射為 UNIX 文件系統(tǒng)中的 /var/wine/windows/system 。注意你必須指定 "Filesystem" = "win95" 而不是 "Filesystem" = "unix",來(lái)使 Wine 模擬 Windows-相容的(大小寫不敏感)文件系統(tǒng),否則多數(shù)應(yīng)用程序?qū)⒉荒芄ぷ鳌?br> 3.1.4. 系統(tǒng) DLL Wine 小組決定需要建立偽 DLL 文件來(lái)欺騙那些通過(guò)檢查文件存在來(lái)確定是否可獲得一個(gè)特征(比如 Winsock 和它的 TCP/IP 連網(wǎng))的應(yīng)用程序。如果你也有這個(gè)問(wèn)題,你可以在 system 目錄中建立一個(gè)空文件來(lái)讓應(yīng)用程序認(rèn)為它存在,而在應(yīng)用實(shí)際要求它的時(shí)候 Wine 將裝載它的內(nèi)置的 DLL。(不幸的是, tools/wineinstall 自身不建立這樣的空文件。) 應(yīng)用程序有時(shí)還嘗試從物理文件中檢查資源的版本(例如,要確定 DirectX 版本)。在這種情況下空文件就不起作用了,必須有完整版本資源的安裝文件。當(dāng)前正在處理這個(gè)問(wèn)題。目前,你仍需獲取一些真實(shí)的 DLL 來(lái)欺騙這些應(yīng)用程序。 對(duì)于那些 wine 目前未很好實(shí)現(xiàn)(或根本未實(shí)現(xiàn))的 DLL。如果不擁有一個(gè)真實(shí)的 Windows,則有的人將會(huì)竊取所需的 DLL,總是可以從象 http://solo./dllarchive/ 這樣的地方得到一個(gè) DLL 歸檔。 3.2. 安裝 Wine 而無(wú)須 Windows 編寫:James Juran <juran@cse.psu.edu>; (提取自 wine/documentation/no-windows) Wine 的一個(gè)主要目標(biāo)是允許用戶運(yùn)行 Windows 程序而無(wú)須在它們的機(jī)器上安裝 Windows。Wine 實(shí)現(xiàn)了通常由 Windows 提供的主要 DLL 的功能。所以,一旦完成了 Wine,使用 Wine 將不需要擁有一個(gè)安裝好的 windows。 Wine 已經(jīng)進(jìn)行到足夠的程度,它已經(jīng)可以運(yùn)行你的目標(biāo)程序而無(wú)須安裝好的 Windows。如果你要嘗試,請(qǐng)依從下列步驟: 建立空 C:\windows、C:\windows\system、C:\windows\Start Menu、和 C:\windows\ Start Menu\Programs 目錄。不要把 Wine 指向充滿了舊有安裝和不干凈的注冊(cè)表的 Windows 目錄。(Wine 在你的 home 目錄中建立一個(gè)特殊的注冊(cè)表,在 $HOME/.wine/*.reg 中。你可能需要?jiǎng)h除這些文件)。 把 ~/.wine/config 中的 [Drive C] 指向你希望 C: 所在的地方。參照 Wine 手冊(cè)頁(yè)來(lái)的得到更詳細(xì)的信息。記住使用 "Filesystem" = "win95"! 使用 tools/wineinstall 來(lái)編譯 Wine 并安裝缺省注冊(cè)表?;蛘呷绻闫米约鹤觯幾g programs/regapi,并運(yùn)行: programs/regapi/regapi setValue < winedefault.reg 運(yùn)行和/或安裝你的應(yīng)用程序。 因?yàn)?Wine 仍未最終完成,一些應(yīng)用程序與固有 Windows DLL 一起運(yùn)行要比與 Wine 的替代品一起運(yùn)行更好。Wine 被設(shè)計(jì)為使之可能。Juergen Schmied (和其他人)關(guān)于如何進(jìn)行有一些提示。這里假定在配置文件中你的 C:\windows 目錄不指向一個(gè)固有 Windows 安裝而是指向一個(gè)獨(dú)立的 Unix 文件系統(tǒng)。(例如, "C:\windows" 是位于 "/home/ego/wine/drives/c" 下的一個(gè)真實(shí)的子目錄 "windows")。 運(yùn)行應(yīng)用程序并加上 --debugmsg +module,+file 參數(shù)來(lái)找出所須的文件。把所須的文件逐個(gè)復(fù)制到 C:\windows \system 目錄中。但不要復(fù)制 KERNEL/KERNEL32、GDI/GDI32、或 USER/USER32。它們實(shí)現(xiàn)了 Windows API 的核心功能,而必須使用 Wine 的內(nèi)部版本。 編輯 ~/.wine/config 中的 "[DllOverrides]" 段,為你要使用的 Windows DLL 在 "builtin" 之前指定 "native"。詳情請(qǐng)參見(jiàn) Wine 手冊(cè)頁(yè)。 注意盡管 Wine 尋找一些網(wǎng)絡(luò) DLL 但不需要它們。Windows MPR.DLL 目前不能工作;你必須使用內(nèi)部實(shí)現(xiàn)。 把 SHELL/SHELL32 和 COMDLG/COMDLG32、COMMCTRL/COMCTL32 成對(duì)的復(fù)制到你的 Wine 目錄中(使用這些 DLL 是"干凈的")。確保在 ~/.wine/config 的"[DllPairs]"段中指定了這些。 要一致: 只一起使用同一個(gè) Windows 版本的 DLL。 把 regedit.exe 放置到 C:\windows 目錄中。(Office 95 與一個(gè)空注冊(cè)表一起工作時(shí)導(dǎo)入一個(gè) *.reg 文件,對(duì) Office 97 不清楚)。 如果你要瀏覽程序的幫助功能還要添加 winhelp.exe 和 winhlp32.exe 。[/color] 3.3.處理 FAT/VFAT 分區(qū) 編寫:Steven Elliott <elliotsl@mindspring.com>; (提取自 wine/documentation/linux-fat-permissions) 本文描述工作在 Linux 中對(duì) FAT 和 VFAT 文件系統(tǒng)的權(quán)限,焦點(diǎn)是為 Wine 配置它們。 3.3.1. 介紹 Linux 可以使用 FAT (老的 8.3 DOS 文件系統(tǒng)) 或 VFAT (新的 Windows 95 或后來(lái)的長(zhǎng)文件名文件系統(tǒng)) 模塊訪問(wèn) DOS 和 Windows 文件系統(tǒng)。在雙引導(dǎo)(Linux + Windows)系統(tǒng)上,要通過(guò) Wine 訪問(wèn)現(xiàn)存的應(yīng)用程序和它們的數(shù)據(jù),掛裝 FAT 或 VFAT 文件系統(tǒng)是提供的主要的方式。 按照 ~/.wine/config 文件的指示,Wine 把掛裝的 FAT 文件系統(tǒng)比如 /c,映射成驅(qū)動(dòng)器字母比如 "c:"。下列摘錄自一個(gè) ~/.wine/config 文件: [Drive C] "Path" = "/c" "Type" = "hd" 盡管在長(zhǎng)文件名支持上 VFAT 文件系統(tǒng)優(yōu)于 FAT 文件系統(tǒng),在本文剩余部分中使用術(shù)語(yǔ) "FAT" 來(lái)參照 FAT 文件系統(tǒng)和它的衍生品。還有,本文通篇使用 "/c" 作為 FAT 掛裝點(diǎn)的例子。 多數(shù)現(xiàn)代 Linux 發(fā)布要么檢測(cè)現(xiàn)存的 FAT 文件系統(tǒng)要么允許配置現(xiàn)存的 FAT 文件系統(tǒng),這樣,可以要么持久的(在引導(dǎo)時(shí))要么在需要的時(shí)候,在一個(gè)位置上如 /c 掛裝它們。在任何一種情況下,缺省的,權(quán)限可能被配置成: ~>;cd /c /c>;ls -l -rwxr-xr-x 1 root root 91 Oct 10 17:58 autoexec.bat -rwxr-xr-x 1 root root 245 Oct 10 17:58 config.sys drwxr-xr-x 41 root root 16384 Dec 30 1998 windows 這里所有的文件都屬于 "root",都在 "root" 組中并只能被 "root" 寫(755 權(quán)限)。 這限制了應(yīng)用程序要想寫文件系統(tǒng)的任何部分,只能以 root 運(yùn)行 Wine。 有三種主要的途徑來(lái)克服上面段落提及的受限制的權(quán)限: 以 root 運(yùn)行 Wine 用更少受限制的權(quán)限來(lái)掛裝 FAT 文件系統(tǒng) 通過(guò)完全或部分復(fù)制它來(lái)隱蔽 FAT 文件系統(tǒng) 在下面的小節(jié)中將討論每種方式。 3.3.2. 以 root 運(yùn)行 Wine 要給予 Wine 所運(yùn)行的應(yīng)用程序無(wú)限制的對(duì) FAT 文件系統(tǒng)訪問(wèn),以 root 運(yùn)行 Wine 是最簡(jiǎn)單和最直接的方式。以 root 運(yùn)行 wine 還允許應(yīng)用程序做與 FAT 文件系統(tǒng)無(wú)關(guān)的事情,比如監(jiān)聽(tīng)小于 1024 的端口。 以 root 運(yùn)行 Wine 是危險(xiǎn)的,原因是對(duì)應(yīng)用程序在系統(tǒng)上的所作所為沒(méi)有限制。 3.3.3. 掛裝 FAT 文件系統(tǒng) 可以用比缺省更少受限制的權(quán)限掛裝 FAT 文件系統(tǒng)。要么變更掛裝 FAT 文件系統(tǒng)的用戶,要么顯式的變更掛裝的 FAT 文件系統(tǒng)的權(quán)限。 FAT 文件系統(tǒng)從掛裝 FAT 文件系統(tǒng)的進(jìn)程繼承權(quán)限。因?yàn)閽煅b FAT 文件系統(tǒng)的進(jìn)程通常是以 root 運(yùn)行的一個(gè)啟動(dòng)腳本,F(xiàn)AT 文件系統(tǒng)繼承 root 的權(quán)限。這導(dǎo)致在 FAT 文件系統(tǒng)上的文件有類似于用 root 建立的文件的權(quán)限。例如: ~>;whoami root ~>;touch root_file ~>;ls -l root_file -rw-r--r-- 1 root root 0 Dec 10 00:20 root_file 它匹配屬主、組和除了缺少‘x’之外在 FAT 文件系統(tǒng)上見(jiàn)到的文件權(quán)限。在 FAT 文件系統(tǒng)上的權(quán)限可以通過(guò)改變 root 的 umask (unset permissions bits)來(lái)變更。例如: ~>;umount /c ~>;umask 022 ~>;umask 073 ~>;mount /c ~>;cd /c /c>;ls -l -rwx---r-- 1 root root 91 Oct 10 17:58 autoexec.bat -rwx---r-- 1 root root 245 Oct 10 17:58 config.sys drwx---r-- 41 root root 16384 Dec 30 1998 windows 用 umask 碼 000 掛裝 FAT 文件系統(tǒng)給予所有用戶對(duì)它的完全控制。在掛裝的時(shí)候提供額外的控制,顯式的指定 FAT 文件系統(tǒng)的權(quán)限。與 FAT 權(quán)限相關(guān)的有三個(gè)掛裝選項(xiàng): uid、gid 和 umask。在手動(dòng)掛裝文件系統(tǒng)的時(shí)候可以指定它們。例如: ~>;umount /c ~>;mount -o uid=500 -o gid=500 -o umask=002 /c ~>;cd /c /c>;ls -l -rwxrwxr-x 1 sle sle 91 Oct 10 17:58 autoexec.bat -rwxrwxr-x 1 sle sle 245 Oct 10 17:58 config.sys drwxrwxr-x 41 sle sle 16384 Dec 30 1998 windows 給予 "sle" 在 /c 上完全控制權(quán)限??梢酝ㄟ^(guò)在上面列出的選項(xiàng)添加到 /etc/fstab 文件中而使之成為永久: ~>;grep /c /etc/fstab /dev/hda1 /c vfat uid=500,gid=500,umask=002,exec,dev,suid,rw 1 1 注意 umask 碼 002 一般用于用戶私有組文件權(quán)限中。在 FAT 文件系統(tǒng)上這個(gè) umask 確保在指定組(gid)中的所有用戶可以完全訪問(wèn)所有文件。 3.3.4. 隱蔽 FAT 文件系統(tǒng) 隱蔽提供了精細(xì)的控制粒度。通過(guò)復(fù)制部分最初的 FAT 文件系統(tǒng),應(yīng)用程序可以安全的在復(fù)制的這部分上工作,而繼續(xù)直接讀其余的部分。這是通過(guò)符號(hào)連接完成的。例如,考慮一個(gè)叫 AnApp 的應(yīng)用程序必須能讀寫 c:\windows 和 c:\AnApp 目錄而可讀整個(gè) FAT 文件系統(tǒng)的的一個(gè)系統(tǒng)。在這個(gè)系統(tǒng)中 FAT 文件系統(tǒng)有缺省的權(quán)限,出于安全的原因或缺乏 root 訪問(wèn)權(quán)限而不應(yīng)該被改變。在這個(gè)系統(tǒng)上可以用下列方式設(shè)置一個(gè)隱蔽目錄: ~>;cd / />;mkdir c_shadow />;cd c_shadow /c_shadow>;ln -s /c_/* . /c_shadow>;rm windows AnApp /c_shadow>;cp -R /c_/{windows,AnApp} . /c_shadow>;chmod -R 777 windows AnApp /c_shadow>;perl -p -i -e 's|/c$|/c_shadow|g' /usr/local/etc/wine.conf 上述命令給予所有用戶對(duì) windows 和 AnApp 目錄完全的讀寫訪問(wèn),而只有 root 可以寫訪問(wèn)其他目錄。[/color] 3.4. SCSI 支持 編寫: Bruce Milner;補(bǔ)充:Andreas Mohr <amohr@codeweavers.com>; (提取自 wine/documentation/aspi) 這個(gè)文件描述設(shè)置 Windows ASPI 接口。 警告/警告/警告!!!!!! 如果不正確使用可能會(huì)使你的系統(tǒng)報(bào)廢 如果正確使用可能會(huì)使你的系統(tǒng)報(bào)廢 我已經(jīng)說(shuō)過(guò),ASPI 是從 windows 程序到 SCSI 設(shè)備的直接連接。ASPI 只轉(zhuǎn)發(fā)程序發(fā)送到 SCSI 總線上 SCSI 命令。 如果在你的設(shè)置文件中使用了錯(cuò)誤的 SCSI 命令,你可以向不合適的設(shè)備發(fā)送完全偽造的命令 - 例如格式化你的硬設(shè)備(假定這個(gè)設(shè)備給予你權(quán)限 - 如果你以 root 運(yùn)行,所有賭注都將失去)。 所以請(qǐng)確保把程序不需要的所有 SCSI 設(shè)備的權(quán)限設(shè)置為盡可能的受限制! 設(shè)置掃描儀的指導(dǎo): (至少讓掃描儀工作起來(lái)) (同樣適用于其他設(shè)備如 CD 刻錄機(jī), MO 驅(qū)動(dòng)器,...,諸如此類) 3.4.1. Windows 要求 掃描儀軟件需要使用 "Adaptec" 兼容驅(qū)動(dòng)器(ASPI)。至少與 Mustek 一起,它們?cè)试S你選擇使用內(nèi)置卡或 "Adaptec (AHA)" 兼容驅(qū)動(dòng)器。任何其他方式都不能工作。支持通過(guò) DOS ASPI 驅(qū)動(dòng)器(例如, ASPI2DOS) 訪問(wèn)掃描儀的軟件。 [AM] 你可能需要這個(gè)軟件的一個(gè)真實(shí)的 windows 安裝來(lái)正確設(shè)置 LUN's/SCSI id。我也不是非常確定。 3.4.2. LINUX 要求 在 linux 下必須支持你的 SCSI 卡。對(duì)未知 SCSI 卡將不能工作。甚至對(duì)廉價(jià)的垃圾 "掃描儀專用" 控制器在網(wǎng)上都有特定的 Linux 驅(qū)動(dòng)程序。如果你要使用你的 IDE 設(shè)備,你需要使用 ide-scsi 模擬器。閱讀 http: //www./HOWTO/CD-Writing-HOWTO.html 來(lái)獲得 ide-scsi 設(shè)置指導(dǎo)。把 SCSI 驅(qū)動(dòng)程序編譯到你的內(nèi)核中。 對(duì)于最新的(2.2.x)內(nèi)核好象不要求別的什么了: Linux 缺省使用比 Windows 小的 SCSI 緩沖區(qū)。定義了 SG_BIG_BUFF(在 sg.h 中)的內(nèi)核建造缺省設(shè)置太低。SANE 計(jì)劃推薦 130560 好象就工作的很好。這要求重新建造系統(tǒng)內(nèi)核。 為掃描儀建造一個(gè)設(shè)備(一般 SCSI 設(shè)備) - 關(guān)于設(shè)備編號(hào)請(qǐng)參見(jiàn) http://www./HOWTO/SCSI-Prog ... HOWTO.html 的 SCSI 編程 HOWTO。 我建議讓掃描儀設(shè)備對(duì)一個(gè)組可寫。我建立了一個(gè)叫 scanner 的組并添加上了我自己。以 root 運(yùn)行會(huì)增加向不適當(dāng)?shù)脑O(shè)備發(fā)送錯(cuò)誤 SCSI 命令的危險(xiǎn)。使用常規(guī)用戶,你將受到更好的保護(hù)。 對(duì)于 Win32 軟件(WNASPI32),Wine 在適當(dāng)?shù)奈恢眠M(jìn)行自動(dòng)檢測(cè)。對(duì)于 Win16 軟件(WINASPI),你需要在 ~/.wine/config 中為你的特定掃描儀添加一個(gè) SCSI 設(shè)備條目。格式是 [scsi cCtTdD],這里的 "C" = "controller"、"T" = "target"、D=LUN 例如,我設(shè)置掃描儀為 controller 0、Target 6、LUN 0。 [scsi c0t6d0] "Device" = "/dev/sgi" 對(duì)你的特定的 SCSI 設(shè)置可能不同。 3.4.3. 一般信息 我使用一個(gè)包 "ipplus" 承載 mustek 掃描儀。這個(gè)程序使用 TWAIN 驅(qū)動(dòng)器規(guī)定來(lái)訪問(wèn)掃描儀。 (TWAIN 管理器) ipplus.exe <--->; (TWAIN INTERFACE) <--->; (TWAIN DATA SOURCE . ASPI) ->; WINASPI 3.4.4. 注意/缺陷 最大的缺陷是目前只能在 linux 下工作。 ASPI 代碼只在下列掃描儀上進(jìn)行了測(cè)試: 在 Linux 下一個(gè) Mustek 800SP 加上在一個(gè) Buslogic 控制器[BM] 在 Linux 下通過(guò) DOSASPI 訪問(wèn)的一個(gè) Siemens Nixdorf 9036 加上 Adaptec AVA-1505。注意我有顏色問(wèn)題,通過(guò)(少見(jiàn)可讀的結(jié)果)[AM] 一個(gè) Fujitsu M2513A MO 驅(qū)動(dòng)器 (640MB) 使用一般 SCSI 驅(qū)動(dòng)器。格式化和彈出(eject)工作良好。為訪問(wèn)硬件而感謝 Uwe Bonnes! [AM] 我不擔(dān)保 ASPI 代碼。它可以使我的掃描儀工作。但可能使你的驅(qū)動(dòng)器爆炸。我無(wú)法確定。我承擔(dān)零責(zé)任![/color] HonestQiao 回復(fù)于:2005-09-13 14:11:34 第 4 章. 配置 Wine 目錄 4.1. 一般配置 4.2. Win95/98 外觀 4.3. 配置 x11drv 驅(qū)動(dòng)器 4.4. 注冊(cè)表 4.5. Wine 的驅(qū)動(dòng)器標(biāo)簽和系列號(hào) 4.6. Dll 加載 4.7. 鍵盤 4.8. 處理字體 4.9. 在 Wine 中打印 設(shè)置 config 文件等。 4.1. 一般配置 Copyright 1999 Adam Sacarny <magicbox@bestweb.net>; (提取自 wine/documentation/config) 4.1.1. Wine 配置文件 Wine config 文件存儲(chǔ)各種 Wine 的設(shè)置。包括: 驅(qū)動(dòng)器和關(guān)于它們的信息 目錄設(shè)置 端口設(shè)置 Wine 外觀和感覺(jué) Wine 的 DLL 用法 4.1.2. 我如何做一個(gè)? 本節(jié)將帶領(lǐng)你經(jīng)過(guò)制作一個(gè) config 文件的(全部)過(guò)程。看一下文件 <dirs to wine>;/documentation/samples/config。它是由段組織起來(lái)的。 段名 需要? 用途 [Drive X] 是 設(shè)置 wine 識(shí)別的驅(qū)動(dòng)器 [wine] 是 設(shè)置 wine 目錄 [DllDefaults] 推薦 缺省裝載的 DLL [DllPairs] 推薦 對(duì) DLL 的健全檢查 [DllOverrides] 推薦 屏棄缺省的 DLL 裝載 [options] 否 好象沒(méi)人知道 [fonts] 是 字體外觀和識(shí)別 [serialports] 否 wine 見(jiàn)到的 COM 端口 [parallelports] 否 wine 見(jiàn)到的 LPT 端口 [spooler] 否 打印緩沖池 [ports] 否 直接訪問(wèn)端口 [spy] 否 怎樣處理特定的調(diào)試信息 [Registry] 否 指定 windows 注冊(cè)表文件的位置 [tweak.layout] 推薦 wine 的外觀 [programs] 否 自動(dòng)運(yùn)行的程序 [Console] 否 控制臺(tái)設(shè)置 4.1.2.1. [Drive X] 段 這是自明的,下面是深入的指導(dǎo)。對(duì)于 Wine 中的每個(gè)驅(qū)動(dòng)器最多有 6 行。 [Drive X] 上面的行開(kāi)始了一個(gè)給字母是 X 的那個(gè)驅(qū)動(dòng)器的段落。 Path=/dir/to/path 這個(gè)路徑是這個(gè)驅(qū)動(dòng)器開(kāi)始的地方。當(dāng) Wine 在驅(qū)動(dòng)器 X 中瀏覽的時(shí)候,它將見(jiàn)到目錄 /dir/to/path 中的文件。不要忘記去掉尾隨的斜杠! "Type" = "floppy|hd|cdrom|network" <--- 這個(gè) | 的意思是 "Type = "<選項(xiàng)之一>;" 設(shè)置 Wine 將見(jiàn)到的驅(qū)動(dòng)器類型。類型必須等于下列四者之一 floppy、hd、cdrom、或 network。它們是自明的。 "Label" = "blah" 定義驅(qū)動(dòng)器標(biāo)簽。一般只有查找一個(gè)特定的 CD-ROM 的應(yīng)用程序需要它。關(guān)于查找標(biāo)簽的信息請(qǐng)參見(jiàn) <dirs to wine>;/documentation/cdrom-labels。標(biāo)簽最多是 11 個(gè)字符。 "Serial" = "deadbeef" 告訴 Wine 這個(gè)驅(qū)動(dòng)器的系列號(hào)。一些意圖防止剽竊的應(yīng)用程序可能需要它,否則不要使用它。最多 8 個(gè)字符和十六進(jìn)制數(shù)。 "Filesystem" = "msdos|win95|unix" 設(shè)置 Wine 查看這個(gè)驅(qū)動(dòng)器上的文件的方式。 msdos 大小寫不敏感文件系統(tǒng)。類似于 DOS 和 Windows 3.x。 8.3 是文件名的最大長(zhǎng)度(eightdot.123) - 更長(zhǎng)的部分將被截掉。(注意: 如果你想運(yùn)行使用長(zhǎng)文件名的程序,這將是非常糟的選擇。win95 可以很好的與設(shè)計(jì)在 msdos 系統(tǒng)下運(yùn)行的應(yīng)用程序一起工作。換句話來(lái)說(shuō),你可能不需要使用它。) win95 大小寫不敏感。類似于 Windows 9x/NT4。這可能是你用來(lái)工作的長(zhǎng)文件名文件系統(tǒng)。是給 wine 下運(yùn)行的多數(shù)應(yīng)用程序選擇的文件系統(tǒng)??赡苷悄阈枰? unix 大小寫敏感。這個(gè)文件系統(tǒng)基本不用(Windows 應(yīng)用程序需要大小寫不敏感文件名)。如果你敢就試一下,win95 是更好的選擇。 "Device" = "/dev/xx" 只用于軟盤和光盤設(shè)備。在 Extended2 分區(qū)上使用它將有災(zāi)難性的結(jié)果(在一個(gè) windows 應(yīng)用程序嘗試做一次低層寫的時(shí)候,他們以在 FAT 下的方式去做 -- FAT 不能與 Extended2 混同使用)。 注意: 這個(gè)設(shè)置不是十分重要;如果保持未指定,幾乎所有的應(yīng)用程序都沒(méi)有問(wèn)題。對(duì)于 CD-ROM 你可能希望添加它來(lái)獲得自動(dòng)的標(biāo)簽檢測(cè)。如果你不能確定指定的設(shè)備名字,只須為你的設(shè)備空缺這個(gè)設(shè)置。 下面是 Drive X 的一個(gè)設(shè)置,它是一個(gè)通用的硬盤驅(qū)動(dòng)器: [Drive X] "Path" = "/dos-a" "Type" = "hd" "Label" = "Hard Drive" "Filesystem" = "win95" 下面是 Drive X 的一個(gè)設(shè)置,它是一個(gè)通用的 CD-ROM 驅(qū)動(dòng)器: [Drive X] "Path" = "/dos-d" "Type" = "cdrom" "Label" = "Total Annihilation" "Filesystem" = "win95" "Device" = "/dev/hdc" 下面是 Drive X 的一個(gè)設(shè)置,它是一個(gè)通用的軟盤驅(qū)動(dòng)器: [Drive X] "Type" = "floppy" "Path" = "/mnt/floppy" "Label" = "Floppy Drive" "Serial" = "87654321" "Filesystem" = "win95" "Device" = "/dev/fd0" 4.1.2.2. [wine] 段 配置文件的 [wine] 段包含 wine 使用的目錄的信息。在給這些設(shè)置指定目錄的時(shí)候,按它們?cè)?wine 中出現(xiàn)的那樣設(shè)置它們。如果你的驅(qū)動(dòng)器 C 有一個(gè)路徑 /dos,并且你的 windows 目錄位于 /dos/windows,則使用: "Windows" = "c:\\ windows" 它設(shè)置 windows 目錄。如果你未曾有這個(gè)目錄則建一個(gè)。沒(méi)有尾隨的斜杠(不能是 C:\\windows\)! "System" = "c:\\windows\\system" 它設(shè)置 windows 系統(tǒng)文件所在的地方。這個(gè)目錄應(yīng)當(dāng)駐留在用于 Windows 設(shè)置的目錄中。如果你沒(méi)有 windows 則它應(yīng)是系統(tǒng)文件所在的地方。再次強(qiáng)調(diào),沒(méi)有尾隨的斜杠! "Temp" = "c:\\temp" 這應(yīng)該是你打算把臨時(shí)文件存儲(chǔ)到其中的目錄。你必須有到它的寫訪問(wèn)權(quán)限。 "Path" = "c:\\windows;c:\\windows\\system;c:\\blanco" 行為好象是 UNIX 的 PATH 環(huán)境變量設(shè)置。在 wine 運(yùn)行如 wine sol.exe,如果 sol.exe 駐留在 Path 設(shè)置中指定的一個(gè)目錄中,wine 將會(huì)運(yùn)行它(當(dāng)然,如果 sol.exe 駐留在當(dāng)前目錄中,wine 也可以運(yùn)行它)。確保它總包含你的 windows 目錄和系統(tǒng)目錄(對(duì)于這個(gè)設(shè)置,它必須包含 "c:\\windows;c:\\windows\\system")。 "SymbolTableFile" = "wine.sym" 為 wine 調(diào)試器設(shè)置符號(hào)表。你可能不需要擺弄它。如果你的 wine 出了問(wèn)題(stripped)可能用到它。 "printer" = "off|on" 告訴 wine 是否允許打印機(jī)驅(qū)動(dòng)程序和打印工作。這些東西仍處在 alpha 階段,所以使用它你要當(dāng)心。但一些人可能發(fā)現(xiàn)它很有用。如果你不打算進(jìn)行打印工作,則不要把它添加到你的 ~/.wine/config 中(它可能不在其中)。還要檢查 [spooler] 和 [parallelports] 段。 4.1.2.3. 介紹 DLL 段 在 wine 配置文件中設(shè)置 DLL 段之前,你需要知道一些事情。 4.1.2.3.1. Windows DLL 對(duì) 多數(shù) windows DLL 有 win16 (Windows 3.x) 和 win32 (Windows 9x/NT) 兩種形式。win16 和 win32 DLL 版本的組合叫做"DLL 對(duì)"。下面是最常見(jiàn)的 DLL 對(duì): Win16 Win32 固有 [a] KERNEL KERNEL32 否! USER USER32 否! SHELL SHELL32 是 GDI GDI32 否! COMMDLG COMDLG32 是 VER VERSION 否 注釋:a. 是 wine 可以使用固有的 dll?(參見(jiàn)下節(jié)) 4.1.2.3.2. DLL 的不同形式 wine 可以裝載的 DLL 有多種形式: native(本地,固有) DLL 包含在 windows 中。許多 windows DLL 可以用它們固有的形式來(lái)裝載。許多時(shí)候這些固有版本比它們的非 Microsoft 替代品要好一些,但不總是。 elfdll 用 ELF 封裝的 windows DLL。當(dāng)前還是實(shí)驗(yàn)性的(仍不能工作)。 so 本地 ELF 庫(kù)。仍不能工作。 builtin(內(nèi)置) DLL 裝載的最通常形式。如果 DLL 用固有形式裝載是錯(cuò)誤的(error-prone)(例如,KERNEL),你沒(méi)有固有的 DLL,或你想自由于 Microsoft,則可以使用它們。 4.1.2.4. [DllDefaults] 段 這些設(shè)置提供了 wine 的缺省 DLL 裝載處理。 "DefaultLoadOrder" =" native, so, builtin" 這個(gè)設(shè)施是一個(gè)逗號(hào)分界的列表,按它的次序嘗試裝載 DLL。如果第一種選項(xiàng)失敗了,它將嘗試第二種,以次類推。上面的次序在多數(shù)情況下是最好的。 4.1.2.5. [DllPairs] 段 有時(shí),在缺省配置文件中有一個(gè)叫做 [DllPairs] 的段,它已經(jīng)被廢棄了,原因是組對(duì)信息已經(jīng)被嵌入到 Wine 自身中。(本段的目的只不過(guò)是如果用戶嘗試組對(duì)(pair codependent)不同類型的16-bit/32-bit DLL 則發(fā)起警告。) 如果你的 wine.conf 或 ~/.wine/config 中仍然有它,你刪除它是安全的。 4.1.2.6. [DllOverrides] 段 本段的格式對(duì)于每行都是相同的: <DLL>;{,<DLL>;,<DLL>;...} = <FORM>;{,<FORM>;,<FORM>;...} 例如,要裝載內(nèi)置的 KERNEL 對(duì)(這里大小寫都行): "kernel,kernel32" = "builtin" 要裝載固有 COMMDLG 對(duì),但如果它們不工作則嘗試內(nèi)置的: "commdlg,comdlg32" = "native,builtin" 要裝載 COMCTL32: "comctl32" = "native" 下面是一個(gè)很好的通用設(shè)置(在你 wine 包中的 config 文件中定義的): [DllOverrides] "commdlg" = "builtin, native" "comdlg32" = "builtin, native" "ver" = "builtin, native" "version" = "builtin, native" "shell" = "builtin, native" "shell32" = "builtin, native" "lzexpand" = "builtin, native" "lz32" = "builtin, native" "comctl32" = "builtin, native" "commctrl" = "builtin, native" "wsock32" = "builtin" "winsock" = "builtin" "advapi32" = "builtin, native" "crtdll" = "builtin, native" "mpr" = "builtin, native" "winspool.drv" = "builtin, native" "ddraw" = "builtin, native" "dinput" = "builtin, native" "dsound" = "builtin, native" "mmsystem" = "builtin" "winmm" = "builtin" "msvcrt" = "native, builtin" "msvideo" = "builtin, native" "msvfw32" = "builtin, native" "mcicda.drv" = "builtin, native" "mciseq.drv" = "builtin, native" "mciwave.drv" = "builtin, native" "mciavi.drv" = "native, builtin" "mcianim.drv" = "native, builtin" "msacm.drv" = "builtin, native" "msacm" = "builtin, native" "msacm32" = "builtin, native" "midimap.drv" = "builtin, native" "wnaspi32" = "builtin" "icmp" = "builtin" 注意: 你見(jiàn)到此中的一些 dll 的第一選項(xiàng)是 elfdll 或 so。對(duì)于你這個(gè)嘗試將是失敗的,但你不用管它,它會(huì)使用第二個(gè)或第三個(gè)選項(xiàng)。 4.1.2.7. [options] 段 好象沒(méi)人知道這段是干什么用的... "AllocSystemColors" = "100" 分配的系統(tǒng)顏色? 保持它為 100。 4.1.2.8. [fonts] 段 本段設(shè)置 wine 的字體處理。 "Resolution" = "96" 因?yàn)?X 處理字體的方式與 Windows 的方式不同,wine 使用一個(gè)特殊的機(jī)制來(lái)處理它們。它必須使用在"Resolution"設(shè)置中的數(shù)來(lái)縮放字體。60-120 是合理的值,96 是此間的一個(gè)很好的值。如果你能獲得真實(shí)的 windows 字體(參見(jiàn) < dirs to wine>;/documentation/ttfserver 和 fonts),這個(gè)選項(xiàng)就不重要了。當(dāng)然,總是可以使你的 X 字體在 wine 中工作的很好。 "Default" = "-adobe-times-" wine 使用的缺省字體。隨你的喜好去設(shè)置(fool around with)它。 可選的: Alias 設(shè)置允許你把一個(gè) X 字體映射成在 wine 中使用的一個(gè)字體。如果應(yīng)用程序需要使用你沒(méi)有的特定字體,而存在一個(gè)很好的替代字體,可使用這個(gè)設(shè)置。語(yǔ)法如下: "AliasX" = "[偽裝的 windows 名字],[真實(shí)的 X 名字]"<,可選的"屏蔽"標(biāo)志 >; 非常直接,把 "AliasX" 替換為 "Alias0", 接著 "Alias1" 并以此類推。偽裝的 windows 名字是在 wine 中的 windows 應(yīng)用程序?qū)⒁?jiàn)到的字體名字。而真實(shí)的 X 名字是 X 見(jiàn)到的字體名字(運(yùn)行 "xfontsel"可以查看)??蛇x的"屏蔽" 段允許你利用你定義的偽裝 windows 名字。如果不使用它,則 wine 將只是嘗試提取偽裝 windows 名字自身而不使用你輸入的值。 下面是沒(méi)有屏蔽的別名的例子。字體在 windows 應(yīng)用程序中將表現(xiàn)為"Google"。在一個(gè) config 文件中定義一個(gè)別名的時(shí)候,請(qǐng)忘記我的注釋文本("<-- blah" 材料) "Alias0" = "Foo,--google-" 下面是啟用屏蔽的例子。在 windows 中字體將表現(xiàn)為 "Foo"。 "Alias1" = "Foo,--google-,subst" 詳情參見(jiàn) <dirs to wine>;/documentation/fonts 4.1.2.9. [serialports]、[parallelports]、[spooler]、和 [ports] 段 盡管看起來(lái)好象是很多段,它們是緊密關(guān)聯(lián)的。它們都是關(guān)于通信和并行端口的。 [serialports] 段告訴 wine 那些串行端口是允許使用的。 "ComX" = "/dev/cuaY" 把 X 替換為 Windows 中 COM 端口號(hào)(1-8) 而 Y 是它在 X 的編號(hào)(通常是在 Windows 中端口號(hào)減 1)。 ComX 實(shí)際上可以是任何設(shè)備(/dev/modem 是可接受的)。不總是需要定義任何 COM 端口(一個(gè)可選的設(shè)置)。下面是一個(gè)例子: "Com1" = "/dev/cua0" 你想設(shè)置多少就設(shè)置多少。定義你需要的所有 COM 端口。 [parallelports] 段設(shè)置在 wine 下可以訪問(wèn)的任何并行端口。 "LptX" = "/dev/lpY" 很熟悉? 語(yǔ)法很象 COM 端口設(shè)置。把 X 替代為 1-4 的一個(gè)值如同在 Windows 中那樣,把 Y 替代為 0-3 的一個(gè)值 (同 COM 端口一樣,Y 通常是在 windows 中的值減 1)。你不總是需要定義一個(gè)并行端口(AKA,它是可選的)。象其他段一樣, LptX 可以等于任何設(shè)備(可能是 /dev/printer)。下面是一個(gè)例子: "Lpt1" = "/dev/lp0" [spooler] 段將通知 wine 在那里緩沖(spool)打印作業(yè)。如果你想打印的話就要使用它。Wine docs 聲稱現(xiàn)在的緩沖池是 "非常原始的",所以它不能很好的工作。這是可選的。在本段中你唯一的設(shè)置工作是把一個(gè)端口(例如,LPT1)映射到一個(gè)文件或一個(gè)命令上。下面是一個(gè)例子,把 LPT1 映射到一個(gè)文件 out.ps 上: "LPT1:" = "out.ps" 下列命令把到 LPT1 的打印作業(yè)映射到命令 lpr。注意這個(gè) |: "LPT1:" = "|lpr" [ports] 段只在需要直接端口訪問(wèn)的時(shí)候是有用的,例如用戶的程序需要 dongle(加密/解密器)或掃描儀。如果不需要,就不要用它! "read" = "0x779,0x379,0x280-0x2a0" 給予到這些 IO 的直接讀訪問(wèn)。 "write" = "0x779,0x379,0x280-0x2a0" 給予到這些 IO 的直接寫訪問(wèn)。這是保持 read 和 write 的設(shè)置相同可能是個(gè)好主意。只有你以 root 運(yùn)行的時(shí)候這些材料才能工作。 4.1.2.10. [spy]、[Registry]、[tweak.layout]、和 [programs] 段 使用 [spy] 來(lái)包含或排除調(diào)試信息,并把它們輸出到一個(gè)文件中。后者是很少使用的。這些都是可選的,你可能不需要向你的 config 中的這個(gè)段增加或刪除任何東西。 "File" = "/blanco" 為 wine 設(shè)置日志文件。設(shè)置為 CON 來(lái)記錄到標(biāo)準(zhǔn)輸出。這很少使用。 "Exclude" = "WM_SIZE;WM_TIMER;" 在日志文件中排除關(guān)于 WM_SIZE 和 WM_TIMER 的調(diào)試信息。 "Include" = "WM_SIZE;WM_TIMER;" 在日志文件中包含關(guān)于 WM_SIZE 和 WM_TIMER 的調(diào)試信息。 使用 [Registry] 來(lái)告訴 wine 你的舊有的 windows 注冊(cè)表文件存在于什么地方。這個(gè)段是完全可選的,而且對(duì)沒(méi)有現(xiàn)存 windows 安裝的人是沒(méi)用的。 "UserFileName" = "/dirs/to/user.reg" 你舊有的 user.reg 文件的位置。 [tweak.layout] 決定 wine 的外觀。它只有一個(gè)設(shè)置。 "WineLook" = "win31|win95|win98" 可以把 wine 的外觀改變?yōu)?Windows 3.1 和 Windows 95。win98 設(shè)置的行為在多數(shù)情況下類似于 win95。 使用 [programs] 來(lái)說(shuō)明在特定條件下運(yùn)行什么程序。 "Default" = "/program/to/execute.exe" 設(shè)置啟動(dòng) wine 而未指定一個(gè)程序的時(shí)候運(yùn)行的程序。 "Startup" = "/program/to/execute.exe" 設(shè)置在每次啟動(dòng)的時(shí)候自動(dòng)運(yùn)行的程序。 4.1.3. 我把它放在哪里? wine config 文件可以放到兩個(gè)地方。 /usr/local/etc/wine.conf 系統(tǒng)范圍的 config 文件,用于沒(méi)有自己的配置文件的任何人。注意: 這個(gè)文件當(dāng)前未使用,原因是一個(gè)新的全局配置機(jī)制現(xiàn)在仍未準(zhǔn)備好。 $HOME/.wine/config 你自己的 config 文件,只用于你的用戶。 把你的 wine.conf 版本文件復(fù)制到 /usr/local/etc/wine.conf 或 $HOME/.wine/config 來(lái)讓 wine 識(shí)別它。 4.1.4. 如果它不工作怎么辦? 事情總是可能出錯(cuò)。如果不可想象的事情發(fā)生了,嘗試一下新聞組,comp.emulators.ms-windows.wine,或者在 irc.stealth.net:6668 或連接的服務(wù)器上找尋 IRCnet 頻道 #WineHQ。確保你完全的查閱了本文檔,并且還讀了: README http://www./wine/index.html (可選的,推薦的) 如果看起來(lái)你真的已經(jīng)作了研究,等著收到有幫助的建議好了。如果你沒(méi)有,作好受到指責(zé)的準(zhǔn)備。[/color] 4.2. Win95/98 外觀 編寫:David A. Cuthbert <dacut@ece.cmu.edu>; (提取自 wine/documentation/win95look) 介紹 Win95/Win98 界面設(shè)置。 不再使用 #define 開(kāi)關(guān)為 Win3.1 和 Win95 外觀來(lái)編譯 Wine,現(xiàn)在在 ~/.wine/config 中一個(gè)特殊的 [Tweak.Layout] 段中編碼,其中有 "WineLook" = "Win95" 或 "WineLook" = "Win98" 條目。 已經(jīng)向 ~/.wine/config 文件增加了一些新的段和一些條目 -- 它們只是用來(lái)調(diào)試 Win95 tweak 并且可能在將來(lái)的發(fā)行中刪除掉! 這些條目/段是: [Tweak.Fonts] "System.Height" = "<point size>;" # 設(shè)置系統(tǒng)字型的高度 "System.Bold" = "[true|false]" # 系統(tǒng)字體是否應(yīng)該是粗體 "System.Italic" = "[true|false]" # 系統(tǒng)字體是否應(yīng)該是斜體 "System.Underline" = "[true|false]" # 系統(tǒng)字體是否應(yīng)該有下劃線 "System.StrikeOut" = "[true|false]" # 系統(tǒng)字體是否應(yīng)該有刪除線 "OEMFixed.xxx" # 給 OEM fixed 字型的一些參數(shù) "AnsiFixed.xxx" # 給 Ansi fixed 字型的一些參數(shù) "AnsiVar.xxx" # 給 Ansi variable 字型的一些參數(shù) "SystemFixed.xxx" # 給系統(tǒng) fixed 字型的一些參數(shù) [Tweak.Layout] "WineLook" = "[Win31|Win95|Win98]" # 改變 Wine 的感觀 4.3. 配置 x11drv 驅(qū)動(dòng)器 編寫:Ove Ken <ovek@>; (提取自 wine/documentation/cdrom-labels) 多數(shù) Wine 用戶在一個(gè)叫做 X11 的窗口系統(tǒng)下運(yùn)行 Wine。在 Wine 歷史上的多數(shù)時(shí)期,這是唯一的可獲得的顯示驅(qū)動(dòng)器,但是在近幾年,已經(jīng)重新組織了部分 Wine 來(lái)允許其他顯示驅(qū)動(dòng)器(當(dāng)前只能獲得一個(gè)可替代的顯示驅(qū)動(dòng)器是 Patrik Stridvall 的基于 ncurses 的 ttydrv,他聲稱用它來(lái)顯示 calc.exe)。在~/.wine/config 的 [wine] 段中用 GraphicsDriver 選項(xiàng)來(lái)選擇顯示驅(qū)動(dòng)器,但在本文中我只覆蓋 x11drv 驅(qū)動(dòng)器。 4.3.1. x11drv 操作模式 x11drv 驅(qū)動(dòng)器由兩個(gè)概念上的不同部分組成,圖形驅(qū)動(dòng)器(GDI 部分),和窗口驅(qū)動(dòng)器(USER 部分)。但它們二者都被連接到 libx11drv.so 模塊中(你用 GraphicsDriver 選項(xiàng)裝載它)。在 Wine 中,運(yùn)行在 X11 上,圖形驅(qū)動(dòng)器必須在窗口驅(qū)動(dòng)器提供的 drawable (window interior)上繪圖。這與 Windows 模型有一點(diǎn)區(qū)別, 在 X11 中,窗口系統(tǒng)建立和配置由圖形驅(qū)動(dòng)器控制的設(shè)備上下文,而允許應(yīng)用程序在它們喜歡的任何地方用掛鉤連接起(hook into)這個(gè)聯(lián)系。所以,為了要在兼容性和可用性之間提供有道理的任何折中,x11drv 有三種不同的操作模式。 Unmanaged/Normal 缺省的。窗口管理器無(wú)關(guān)(完全忽略任何運(yùn)行的窗口管理器)。 窗口裝飾(decoration)(標(biāo)題條,邊界,等)由 Wine 繪制來(lái)使感觀如同真實(shí)的 Windows。這兼容于依靠可以計(jì)算出這些裝飾的精確大小的應(yīng)用程序,或想自己畫它們的程序。 Managed 使用 --managed 命令行選項(xiàng)或 Managed wine.conf 選項(xiàng)(見(jiàn)后)指定。普通的頂層框架窗口,有粗邊界,標(biāo)題條,和由你的窗口管理器管理的系統(tǒng)菜單。這允許這些應(yīng)用可以與你的桌面的其余部分更好的集成,但可能不總是工作的很好。(非常需要一個(gè)重寫的這種操作模式,使它更加健壯和更少瑕疵(patchy),并計(jì)劃在 Wine 1.0 發(fā)行之前完成。) Desktop-in-a-Box 使用 --desktop 命令行選項(xiàng)(加上一個(gè)幾何,比如給一個(gè) 800x600 這么大的桌面 --desktop 800x600, 或者在顯示器的左上角自動(dòng)的定位桌面 --desktop 800x600+0+0 )。這是與 Windows 模型最兼容的模式。所有應(yīng)用程序窗口都是在提供給 Wine 的桌面窗口內(nèi)的 Wine 繪制的窗口(桌面窗口自身由你的窗口管理器來(lái)管理),而 Windows 應(yīng)用可以隨心所欲的在這個(gè)虛擬工作空間操作并認(rèn)為完全擁有它,不受你的其他 X 應(yīng)用程序的打擾。 4.3.2. [x11drv] 段 AllocSystemColors 只在你擁有一個(gè)基于調(diào)色板(palette)的顯示器時(shí)使用,例如,如果你的 X 服務(wù)器被設(shè)置為 8bpp 的色深,并且你沒(méi)有想要的一個(gè)私有顏色映射。它指定 Wine 所占有的共享顏色映射(colormap)單元(palette entries)的最大數(shù)目。這個(gè)值越高,其他應(yīng)用程序可獲得的顏色就越少。 PrivateColorMap 在你擁有一個(gè)基于調(diào)色板的顯示器時(shí)使用,例如,如果你的 X 服務(wù)器被設(shè)置為 8bpp 的色深。它指定你不想使用共享的顏色映射,而是使用一個(gè)私有的顏色映射,這這里可以獲得全部的 256 種顏色。不足是這個(gè) Wine 的私有顏色映射只在鼠標(biāo)指針在這個(gè) Wine 窗口期間可以見(jiàn)到,所以如果你頻繁使用鼠標(biāo)就會(huì)經(jīng)常見(jiàn)到迷幻的閃爍和滑稽的顏色。 PerfectGraphics 它確定在 blit 操作中對(duì)于特定的 ROP 代碼使用快速 X11 例程還是嚴(yán)格的 Wine 例程。多數(shù)用戶不能找出任何區(qū)別。 ScreenDepth 只在多色深顯示器上使用。它指定 Wine 應(yīng)當(dāng)使用(并告訴 Windows 應(yīng)用程序)那種可獲得的色深。 Display 它指定使用那個(gè) X11 顯示器,并且如果被指定了,它將屏棄 DISPLAY 環(huán)境變量和 --display 命令行選項(xiàng)二者。 Managed Wine 可以讓框架窗口由你的窗口管理器來(lái)管理。這個(gè)選項(xiàng)指定你是否想使之成為缺省的。 UseDGA 它指定你是否想讓 DirectDraw 使用 XFree86 的直接圖形體系 (Direct Graphics Architecture -- DGA),這可以接管整個(gè)顯示器并在全屏幕下以最大速度運(yùn)行游戲。(使用 DGA1 (XFree86 3.x),你仍需要首先把 X 服務(wù)器配置成游戲所需的 bpp,而使用 DGA2 (XFree86 4.x),依賴于你的驅(qū)動(dòng)器的能力,有可能使用運(yùn)行時(shí)顏色選擇。) 但要當(dāng)心如果 Wine 在 DGA 模式下崩潰,要想收復(fù)對(duì)你的計(jì)算機(jī)的控制就只能重啟動(dòng)了。 DGA 通常要求要么特權(quán)要么對(duì) /dev/mem 的讀/寫訪問(wèn)權(quán)限。 UseXShm 如果你不希望 DirectX 使用 DGA,你至少可以使用 X 共享內(nèi)存擴(kuò)展(X Shared Memory extensions -- XShm)。它比 DGA 慢很多,原因是應(yīng)用程序不直接訪問(wèn)物理的楨緩沖區(qū),但是使用共享內(nèi)存來(lái)繪制楨至少比使用標(biāo)準(zhǔn) X11 套接口要快,即使通過(guò) Wine 的 XShm 支持有時(shí)仍會(huì)崩潰。 DXGrab 如果你不使用 DGA,你可能想要一種替代的方式來(lái)確保鼠標(biāo)光標(biāo)滯留在游戲窗口中。這個(gè)選項(xiàng)就是干這個(gè)的。當(dāng)然,象使用 DGA 一樣,如果你的 Wine 崩潰了,你就有麻煩了(但不象 DGA 情況下那么糟,因?yàn)槟闳匀豢梢允褂面I盤來(lái)退出 X)。 DesktopDoubleBuffered 只在你使用了 --desktop 命令行選項(xiàng)來(lái)在一個(gè)桌面窗口中運(yùn)行時(shí)使用。指定建立的桌面窗口是否有雙緩沖區(qū)的 visual,是多數(shù) OpenGL 游戲正確運(yùn)行所需的東西。 4.4. 注冊(cè)表 編寫:Ove Ken (提取自 wine/documentation/registry) 在 Win3.x 之后,注冊(cè)表成為 Windows 的一個(gè)基本部分。Windows 自身,和所有遵循 Win95/98/NT/2000/whatever 的應(yīng)用程序,在其中存貯配置和狀態(tài)數(shù)據(jù)。盡管多數(shù)有理智的系統(tǒng)管理員(和 Wine 開(kāi)發(fā)者)惡毒的詛咒 Windows 注冊(cè)表的扭曲天性(twisted nature)。Wine 以某種方式支持它仍是必須的。 4.4.1. 注冊(cè)表結(jié)構(gòu) Windows 注冊(cè)表是一個(gè)復(fù)雜的樹結(jié)構(gòu),而且多數(shù) Windows 程序員不完全知道注冊(cè)表是怎樣布置的,加上它的不同的 "蜂窩"和它們之間的大量連接;一個(gè)完整個(gè)論述(coverage)超出了本文檔的范圍。下面是你需要知道的基本的注冊(cè)鍵。 HKEY_LOCAL_MACHINE 這個(gè)基本根鍵(在 win9x 中,存儲(chǔ)在隱藏文件 system.dat 中)包含與當(dāng)前 Windows 有關(guān)的所有東西。 HKEY_USERS 這個(gè)基本根鍵(在 win9x 中,存儲(chǔ)在隱藏文件 user.dat 中)包含這個(gè)安裝的每個(gè)用戶的配置數(shù)據(jù)。 HKEY_CLASSES_ROOT 這是到 HKEY_LOCAL_MACHINE\Software\Classes 的一個(gè)連接。它包含描述文件關(guān)聯(lián)、OLE 文檔處理器、和 COM 類的數(shù)據(jù)。 HKEY_CURRENT_USER 這是到 HKEY_USERS\your_username 的一個(gè)連接,比如,你的個(gè)人配置。 4.4.2. 使用 Windows 注冊(cè)表 如果你把 Wine 指向一個(gè)現(xiàn)存的 MS 安裝(通過(guò)在 ~/.wine/config 中設(shè)置適當(dāng)?shù)哪夸?,則 Wine 能從中裝載注冊(cè)表數(shù)據(jù)。但是,Wine 不會(huì)把任何東西保存到真實(shí)的 Windows 注冊(cè)表中,而是保存到它自己的注冊(cè)表文件中(見(jiàn)后)。當(dāng)然,如果在 Windows 注冊(cè)表和 Wine 注冊(cè)表二者中都存在一個(gè)特定的注冊(cè)值,則 Wine 將使用后者。 偶爾的,Wine 裝載 Windows 注冊(cè)表可能有麻煩。通常,這是因?yàn)樽?cè)表是不一致或以某種方式被破壞的。如果出現(xiàn)了這個(gè)問(wèn)題,你可以從 MS 的網(wǎng)站下載 regclean.exe 并使用它來(lái)清理注冊(cè)表。作為替代,你總是可以使用 regedit.exe 來(lái)把你需要的數(shù)據(jù)導(dǎo)出到一個(gè)文本文件中,并接著導(dǎo)入到 Wine 中。 4.4.3. Wine 注冊(cè)表數(shù)據(jù)文件 在用戶的主目錄中,有一個(gè)叫 .wine 的子目錄,Wine 缺省的將嘗試在這里保存它的注冊(cè)表。它保存到四個(gè)文件中,它們是: system.reg 這個(gè)文件包含 HKEY_LOCAL_MACHINE。 user.reg 這個(gè)文件包含 HKEY_CURRENT_USER。 userdef.reg 這個(gè)文件包含 HKEY_USERS\.Default (比如,缺省用戶設(shè)置)。 wine.userreg Wine 把 HKEY_USERS 保存到這個(gè)文件中(當(dāng)前和缺省二者),但不從中裝載,除非 userdef.reg 丟失的。 所有這些文件是常人可讀的文本文件,所以不象 Windows,如果需要的話,你實(shí)際上可以用一個(gè)普通的文本編輯器來(lái)編輯它。 除了這些文件之外,Wine 還可以有選擇的從全局注冊(cè)表文件中裝載,它駐留在與全局 wine.conf 相同的目錄中(比如,如果你從源代碼編譯的話則是 /usr/local/etc)。它們是: wine.systemreg 包含 HKEY_LOCAL_MACHINE。 wine.userreg 包含 HKEY_USERS。 4.4.4. 系統(tǒng)管理 一個(gè)系統(tǒng)管理員可以使用上面的文件結(jié)構(gòu)配置系統(tǒng),這樣一個(gè)系統(tǒng) Wine 安裝(和應(yīng)用程序)可以被所有用戶共享,而仍舊讓用戶擁有它自己的個(gè)人化配置。一個(gè)管理員可以,在安裝了 Wine 和用戶需要訪問(wèn)的所有 Windows 應(yīng)用軟件之后,把結(jié)果的 system.reg 和 wine.userreg 復(fù)制成全局注冊(cè)表文件(我們假定它駐留在 /usr/local/etc),使用: cd ~/.wine cp system.reg /usr/local/etc/wine.systemreg cp wine.userreg /usr/local/etc/wine.userreg 并且甚至可以把它們符號(hào)連接回管理員的帳戶上,以便易于以后安裝系統(tǒng)范圍的應(yīng)用程序: ln -sf /usr/local/etc/wine.systemreg system.reg ln -sf /usr/local/etc/wine.userreg wine.userreg 注意如果你以 root 安裝 Wine,tools/wineinstall 腳本已經(jīng)為你作好了這一切。如果你接著在 root 登錄期間安裝 Windows 應(yīng)用程序,你的所有用戶就自動(dòng)的可以使用它們了。應(yīng)用程序的設(shè)置將接受全局注冊(cè)表,而用戶的個(gè)人化配置將保存在他們自己的主目錄中。 但是要注意對(duì)管理員帳戶的操作 - 如果你把管理員的注冊(cè)表復(fù)制或連接成全局注冊(cè)表,任何用戶就都可以讀到管理員的偏好,如果在其中存儲(chǔ)了敏感信息(口令、個(gè)人信息,等)這就不好了。只使用管理員帳戶安裝軟件,而不是進(jìn)行日常工作;平時(shí)使用一個(gè)普通用戶帳戶。 4.4.5. 缺省的注冊(cè)表 一個(gè) Windows 注冊(cè)表缺省的包含許多鍵,而其中的一些對(duì)于安裝程序進(jìn)行正確的操作是必須的。在叫 winedefault.reg 的文件中包含了 Wine 開(kāi)發(fā)者找到的對(duì)安裝應(yīng)用程序是必須的鍵。如果你使用 tools/wineinstall 腳本則已經(jīng)為你自動(dòng)安裝了它,如果你想手動(dòng)安裝它,你可以使用 regapi 工具做這件事。你可在 Wine 發(fā)布中的 documentation/no-windows 文檔中找到更多的信息。 4.4.6. [registry] 段 有了以上信息,下面查看一下 wine.conf/~/.wine/config 中處理注冊(cè)表的選項(xiàng)。 LoadGlobalRegistryFiles 控制是否嘗試裝載全局注冊(cè)表,如果它存在的話。 LoadHomeRegistryFiles 控制是否嘗試裝載用戶的注冊(cè)表文件(在用戶的主目錄中的 .wine 子目錄中)。 LoadWindowsRegistryFiles 控制 Wine 是否嘗試從在現(xiàn)存的 MS Windows 安裝中的真實(shí)的 Windows 注冊(cè)表中裝載注冊(cè)信息。 WritetoHomeRegistryFiles 控制是否把注冊(cè)信息寫到用戶的注冊(cè)表文件中(目前,這是沒(méi)有選擇的,就是說(shuō)如果你把它關(guān)閉了, Wine 根本就不能把注冊(cè)表保存到磁盤上;你退出 Wine 之后,你的變動(dòng)就消失了。) UseNewFormat 這個(gè)選項(xiàng)被廢棄了。Wine 現(xiàn)在總是使用新格式;前些時(shí)候去除了對(duì)舊格式的支持。 PeriodicSave 如果設(shè)置這個(gè)選項(xiàng)為一個(gè)非零的值,它指定你想以一個(gè)給定的時(shí)間間隔把注冊(cè)表保存到磁盤上。如果你未設(shè)置它,則只在 wineserver 終止的時(shí)候把注冊(cè)表保存到磁盤上。 SaveOnlyUpdatedKeys 控制是把整個(gè)注冊(cè)表保存到用戶的注冊(cè)表文件中,還是只保存用戶實(shí)際上變更了的子鍵。考慮到用戶的注冊(cè)表將屏棄任何全局注冊(cè)表文件和 Windows 注冊(cè)表文件,通常應(yīng)該只保存用戶修改了的子鍵; 這種方式下,對(duì)全局或 Windows 注冊(cè)表其余部分的變動(dòng)仍可以影響這個(gè)用戶。 |
|
來(lái)自: 黃三歲大愛(ài)人生 > 《待分類》