第四章 运行wine
内容标签:
4.1 基础使用:应用程序和控制面板
4.2 如何运行wine
4.3 类似explorer的图形化环境变量
4.4 wine的命令行选项
4.5 环境变量
4.6 wineserver命令行选项
4.7 设定windows、dos环境变量
4.8 文本程序(cui:控制用户接口)
本章将描述运行 wine 的所有方面,例如,基本的 wine 启用,各种 wine 支持程序的命令行参数,等等。
4.1 基础使用:应用程序和控制面板
假定您正在使用假的 windows 安装,您使用与您在 windows 里安装应用程序相同的方法在wine 中:通过运行安装向导。您可以只接受默认安装路径,大多数安装向导会默认安装到 “c:/program files”,这很好。如果应用程序安装向导要求创建快捷方式图标,您可能会发现 wine 在您的桌面和您的应用程序目录里创建图标。如果这事发生了,您可以通过点击那里启动应用程序。
标准的卸载东西的方法是对这种应用程序提供一个unistaller,通常注册到“添加/删除应用程序”控制面板。要使用wine上的类似程序,在终端里运行uninstaller程序(它位于在wine源[代码]目录里的programs/uninstaller/ 目录):
$ uninstaller
有些程序安装关联的控制面板,典型的这类例子是ie 浏览器和quicktime播放器,您可以在终端中使用下列命令wine来使用控制面板:
$ wine control
它将打开一个窗口,窗口中有已安装的控制面板,就像在 windows 里一样。
如果应用程序不安装任何目录或桌面项目,您将需要从命令行运用该应用程序。请记住您把它安装在哪里了,然后使用类似下面的命令:
$ wine "c:/program files/appname/appname.exe"
将可能工作。目录并不区分大小写,但请记住一定带上双引号(半角英文)。有些程序并不总是使用显而易见的名字来命名其目录和 exe 文件,故您也许需要进入程序文件目录去看看哪里放了些什么。
4.2 如何来运行wine
您可以简单地调用 wine 命令行来获取简单的帮助信息:
wine 20040405
usage: wine program [arguments...]运行特定的程序
wine --help显示本帮助并退出
wine --version输出版本信息并退出
第一个参数应该是您想要 wine 执行的文件的名字。如果可执行文件在
path
环境变量里,您可以直接出可执行文件名。但是,如果可执行文件不在
path
里,您必须给出可执行文件的全路径(以 windows 格式,而非 unix 格式!)。 例如,给一个下列的 path:
path="c:/windows;c:/windows/system;e:/;e:/test;f:/"
您可以使用如下命令来运行文件 c:/windows/system/foo.exe :
$ wine foo.exe
但是,您必须用下面的命令来运行 c:/myapps/foo.exe:
$ wine c://myapps//foo.exe
(注意反斜线逃逸符 “/”!)
要获取运行文本模式(cui,文本界面)可执行文件的详细信息,请参阅下面相关章节。
4.3 类似 explorer 的图形化wine环境
如果您喜欢使用一个图形化的界面来管理您的文件,您可能想考虑使winefile 。这个 winelib 应用程序是来自 wine 的并且能从其他 wine 程序找到。它是来检视您驱动器配置和定位文件的有用方法。另外您能够直接从winefile执行程序。请注意,很多功能没有被实现。
4.4 wine命令行选项
4.4.1 --help
--help
显示简单的命令行帮助页。
4.4.2 --version
显示 wine 版本。对验证您的安装有用。
4.5 环境变量
4.5.1. winedebug=[channels]
wine 并不是完美的, 并且许多windows程序还是不能在没有bugs的情况下运行于wine下(但那么,很多程序也不能完美运行在native windows下(译者注:个人感觉这里说的应该是native windows dll下完美运行))。为了使人比较容易追踪找到在每个bug后面的成因,wine提供你一些debug channels(找错方法)能让你轻易的找到错误。
当你激活每个排错的方法, 将会引起登录信息被显示到你调用wine的控制台。在那里,你能在你的空闲时后重新传入给一个文件的讯息而且调查它。但是你首先要注意,一些侦错选项能产生难以置信那么多数量的记录信息。(打开这些选项)你能看见很丰富的(wine)的犯罪记录:
relay
每当win32的函数被调用它就会弹出一个日志(调用)信息
win
追踪windows信息传递,当然
all
这是个别名对于每个存在的调试选项。例如对于一个复杂的应用程序,你的侦错记录能容易地大于1mb 或者更大。打开relay选项跟踪时,常产生记录信息超过 10 mb大,关键是你运行了程序多久。 (你可以查看 relayexclude 注册表值,修改relay的跟踪报告。).日志记录会相对降低一点点wine的速度, 因此除非你真的做需要日志文件,否则不应使用 winedebug。
在每个侦错频道里面,你能更进一步指定一个信息类别(message class), 过滤出不同的程度的错误。四个信息类别是:
trace, (追踪)
fixme, (修复)
warn, (警告)
err(错误)
为了要打开一个侦错频道, 使用格式
类别频道
为了把它关掉,使用
类别-频道
为了要列出相同的多于一个的
winedebug
选项,用逗点隔开他们。 例如, 需要警告类别的信息,使用
heap
调试选项。你可以像这样调用wine:
$ winedebug=warn heap wine program_name
如果你停止所要的信息类别(像下面一样的调用), wine将会显示来四个类别的信息:
$ winedebug=heap wine program_name
如果你想看到除relay选项以外的所有记录信息, 你可以像这样做:
$ winedebug= all,-relay wine program_name
这里是一张wine debug选项清单和类别。很多选项将会增加(或减少)在以后的版本中。
表 4-1. debug channels(调试选项)
accel
adpcm
advapi
animate
aspi
atom
avicap
avifile
bidi
bitblt
bitmap
cabinet
capi
caret
cdrom
cfgmgr32
class
clipboard
clipping
combo
comboex
comm
commctrl
commdlg
computername
console
crtdll
crypt
curses
cursor
d3d
d3d_shader
d3d_surface
datetime
dc
ddeml
ddraw
ddraw_fps
ddraw_geom
ddraw_tex
debugstr
devenum
dialog
dinput
dll
dma
dmband
dmcompos
dmfile
dmfiledat
dmime
dmloader
dmscript
dmstyle
dmsynth
dmusic
dosfs
dosmem
dplay
dplayx
dpnhpast
driver
dsound
dsound3d
edit
enhmetafile
environ
event
eventlog
exec
file
fixup
font
fps
g711
gdi
global
glu
graphics
header
heap
hook
hotkey
icmp
icon
imagehlp
imagelist
imm
int
int21
int31
io
ipaddress
iphlpapi
jack
joystick
key
keyboard
listbox
listview
loaddll
local
mapi
mci
mcianim
mciavi
mcicda
mcimidi
mciwave
mdi
menu
menubuilder
message
metafile
midi
mmaux
mmio
mmsys
mmtime
module
monthcal
mpeg3
mpr
msacm
msdmo
msg
mshtml
msi
msimg32
msisys
msrle32
msvcrt
msvideo
mswsock
nativefont
netapi32
netbios
nls
nonclient
ntdll
odbc
ole
oledlg
olerelay
opengl
pager
palette
pidl
powermgnt
print
process
profile
progress
propsheet
psapi
psdrv
qcap
quartz
ras
rebar
reg
region
relay
resource
richedit
rundll32
sblaster
scroll
seh
selector
server
setupapi
shdocvw
shell
shlctrl
snmpapi
snoop
sound
static
statusbar
storage
stress
string
syscolor
system
tab
tape
tapi
task
text
thread
thunk
tid
timer
toolbar
toolhelp
tooltips
trackbar
treeview
ttydrv
twain
typelib
uninstaller
updown
urlmon
uxtheme
ver
virtual
vxd
wave
wc_font
win
win32
wineboot
winecfg
wineconsole
wine_d3d
winevdm
wing
winhelp
wininet
winmm
winsock
winspool
wintab
wintab32
wnet
x11drv
x11settings
xdnd
xrandr
xrender
xvidmode
想了解关于侦错频道的较多的细节, 点击进入 wine开发者向导。
4.5.2 winedlloverrides=[dll overrides]
(译者注:为了简单,我们这里重申一遍:),built-in就是属于wine的dll,native就是windows系统带过来的dll,这样简单的理解认为就够了)
不是总能使用 built-in dll 运行应用程序。有时候 native dll运行得更好。虽然这些 dll overrides 可以通过使用 winecfg 来设置,但是您可能希望使用 winedlloverrides 环境变量来设置使用他们。
例如,如果您想要 wine 来使用本地(原生)ole32.dll, oleaut32.dll 和 rpcrt4 您可以像这么运行 wine :
$ winedlloverrides="ole32,oleaut32,rpcrt4=n" wine program_name
要获取更多关于 dll overrides 的信息,请参阅本指南的 《dll overrides》(3.1.2.1)》章节。
4.5.3 开放源码(oss)音频驱动设置
如果你正在使用oss音频驱动而且有多个音频设备,(例如: /dev/dsp*,/dev/mixer*)你可以指定下面一种你喜欢的环境变量:
laudiodev=[audio device]
lmixerdev=[mixer device]
lmididev=[
例如:
$ audiodev=/dev/dsp4 mixerdev=/dev/mixer1 mididev=/dev/midi3 wine program_name
4.6 wineserver 命令行选项
wineserver 通常自动地被 wine 启动,不论第一个 wine 进程是什么时候启动的。但是,wineserver有一些有用的命令行选项,如果您手动启动 wineserver,您就可以添加它们。例如,通过一个用户登录脚本或其他的什么。
4.6.1 –d
为终端里启动的wineserver的debug输出设置debug级别
4.6.2 -h
显示 wineserver 命令行选项帮助信息。
4.6.3 -k[n]
杀死当前的 wineserver ,使用任意的信号 n。
4.6.4. -p[n]
这个参数使 wineserver 保持您想要的时间,n 即为该时间,单位为“秒”。它可以防止 wineserver 马上关闭。
通常,wineserver 会在最后一个使用 wineserver 的 wine 进程终止后立即退出。但是,由于 wineserver 在启动时载入了许多东西(诸如整个 windows 注册表数据),其启动可能是相当慢的,所以有时候通过使之保持从而保持其在所有 wine 会话结束后持续存在。
4.6.5 -w
此参数使一个新启动的 wineserver 等待,直到当前活动的 wineserver 实例终止。
4.7 设置 windows/dos 环境变量
您的程序可能要求正确地设置一些环境变量以便其成功地运行。在这种情况下,您需要在 linux shell 中设置这些环境变量,因为 wine 将把全部的 shell 环境变量设定传递给 windows 环境变量空间。例如,在 bash shell 中(其他 shell 可能有不同的语法 !):
export myenvironmentvar=myenvironmentvarsetting
这将确保一旦您使用 wine 启动您的程序,该 windows 程序能存取 myenvironmentvar 环境变量。如果您想要 myenvironmentvar 设置能保持,那么您可以把该设定放入 /etc/profile文件中,或者也可以放在 ~/.bashrc 文件里,如果您使用 bash 的话。
请注意,但是该规则也有例外:如果您想要更改 path, system 或 temp 变量,那么您肯定不能那么做,因为那将改变 unix 环境设定。所以,您应该把他们设置在注册表中。要设置他们,您需要启动 wine regedit 然后进入
hkey_current_user/environment
键。现在您可以创建或修改您需要的变量的值
"system" = "c://windows//system"
此设置指出了 windows system 文件们在何处。windows system 目录应该居于被用来作为 windows 设定的目录之下。这样,如果使用 /usr/local/wine_c_windows 作为 windows 目录的话,那么 system 目录应该是 /usr/local/wine_c/windows/system 。此设置务必不要在末尾上写上斜线,并且请确保您有写入权限。
"temp" = "c://temp"
这应该是您想存放您的临时文件的目录, /usr/local/wine_c/temp 在我们前面的例子里。再次提醒,不要有末尾的斜线,要有写入权限!!
"path" = "c://windows;c://windows//system;c://blanco"
类似于 unix boxes 上的 path 设定。当 wine 是运行像 wine sol.exe ,如果 sol.exe 存在于 path 设定里指定的目录中,wine 将执行之(当然啦,如果 sol.exe 存在于当前目录中,wine 将执行当前目录中的那一个 sol.exe)。请确保此变量始终有您的 windows目录 和 system目录 (比如,在此例子中的设置,它必须有 "c://windows;c://windows//system" )
4.8 文本型程序(cui: 控制台用户界面)
文本模式程序是只使用文本作为输出的程序(惊奇啊!)。用 windows 术语来说,它们被称为 cui(console user interface,控制台用户界面)可执行文件,与 gui(graphical user interface,图形用户界面)相对。win32 api 提供了一套完整的 api 来处理这种情况,涵盖了从基本的特征(如文本打印)到高级的功能性(如全屏幕编辑,色彩支持,光标支持,鼠标支持等),中间的特性如:行编辑,或原始的/加工过的 输入流 支持。
鉴于上述的宽广范围,以及当前在 un*x 世界里的应用,wine 提供三种不同的方法来运行控制台程序(亦称 cui 可执行文件):
•bare streams
•wineconsole with user backend
•wineconsole with curses backend
这里的名称有点灰色而略显费解。“bare streams”意味著不提供 wine 的额外支持,这些支持用来影射 unix 控制台存取。另外两种方法要求使用特定的 wine 程序 (wineconsole),它提供扩展的环境。下面的表格描述了使用那三种方法您可以(和不可以)做什么
表4-2. 三种 console 的基本区别
功能
bare streams
wineconsole & user backend
wineconsole & curses backend
如何运行(假定可执行文件为 foo.exe)
$ wine foo.exe
$ wineconsole -- --backend=user foo.exe
$ wineconsole foo.exe
你也可以像选项一样使用:
--backend=curses
对行 oriented cui 应用程序的良好支持 (它们一行接一行地打印信息)
是
是
是
对全屏幕 cui 应用程序的良好支持(包括但不限于色彩支持, 鼠标支持...)
否
是
是
甚至能在 x11 未运行时运行
是
否
是
实现
映射标准的 windows 流到标准的 unix 流 (stdin/stdout/stderr)
wineconsole 将创建一个新的窗口 (这样,要求 user32 dll 可用) 在那里所有信息将被显示
wineconsole 将使用已存在的 unix 控制台 (从程序被运行的那个) 在 (n)curses 库的支持(帮助)下,控制所有控制台表面来与用户交互
已知的限制
如果2个(或多个)windows控制台被用于相同的 un*x 终端,将产生奇怪的表现和行为
4.8.1 cui 可执行文件配置
当使用 wineconsole 时,有若干配置选项可用。wine (windows 也)以每个应用程序为基础,存储若干配置选项在注册表中。例如,这使得用户可以为一个给定的应用程序定义他想要给它的默认屏幕缓冲大小。
从今以后,只有 user backend 允许您编辑那些选项(我们不推荐手动编辑注册表内容)。当您右键在控制台中单击时,将弹出一个菜单,您可以从下述选项中选择:
•default(默认):这将编辑所有尚未被单独配置的应用程序共享的设定。所以,当首次运行一个应用程序时(在您的机器上,在您的帐号下)wineconsole 将把从默认设定继承而来的设定作为应用程序的设定。以后,该应用程序将拥有它自己的设定,您可以按照您的意愿来修改之。
properties(值):这将编辑应用程序的设定。当您已经完成了编辑,将提示您是否想:
1.keep these modified settings only for this session (next time you run the application, you will not see the modification you've just made).
仅为此会话保持这些修改后的设定(下一次您运行该应用程序时,修改将消失)
2.use the settings for this session and save them as well, so that next you run your application, you'll use these new settings again.
为此会话使用这些设定,并存储之,以便您下次运行您的应用程序,您将再一次使用这些新的设定。
下面的列表列出了您可以配置的项目,以及其意义:
表 4-3. wineconsole 配置选项
配置选项
意义
光标大小
定义光标的大小。可用的三个选项为:small (33% 字符高), medium (66%) 和 large (100%)
弹出菜弹
早些时候就说过,当用右键点击窗口,wineconsole就会弹出。然而,这将是个问题,你在wineconsole中的应用程序希望点击右键的事件能够传给它,在你按下control或shift键时,同时点击右键打开弹出菜单(用shift 其他 或者control 其他键组合有另外的功能)。例如:当你没有按住shift键点击右键点击窗口后ticking shift会发送“事件”(event)给应用程序,你按住shift键点击右键时,窗口打开。
快速编辑
这个勾选框允许您决定左键单击事件是否将被解释为事件并发送给当前的应用程序(不勾选)或作为屏幕中被选中的矩形块以待之后拷贝到剪贴斑上 (勾选).
历史记录
这允许您设置控制台能回溯多少条命令。您也可以在连续键入若干条相同的命令时是否要存储它们全部的命令 (不勾选) 或最后一条 (勾选).
外观设定
外观设定(police)值选项卡允许您选择默认控制台的字体 ( 字体文件, 大小, 背景和前景色).
屏幕缓冲
&
窗口大小
您所看见的控制台是由不同的两部分组成。一方面屏幕缓冲包含了所有的您的应用程序打印在屏幕上的信息,另一方面窗口显示屏幕缓冲的给定部分。请注意,窗口总是比屏幕缓冲小或者与之相等。较小的窗口大小将放上滚动条以便您能看见全部的屏幕缓冲的内容。
退出时关闭
如果它被勾选, 那么 wineconsole 将在应用程序终结时退出。反之, 它将保持打开直到用户手动地关闭之: 这将使您能在程序终结后看见它最后输出的信息。
编辑模式
当用户键入命令,他/她可以在许多不同编辑模式中选择:
上一篇:
下一篇: