如何安装和使用Wine,以便在Linux上运行Windows应用程序

如何安装和使用Wine,以便在Linux上运行Windows应用程序,第1张

诚然,在Linux上使用类似于MSOffice这样的应用程序可能是困难的;在这里我们来看一些原因,为什么确实是这样。在开始之前,我们应该指出,CodeWeavers提供的商用Wine已经解决了大部分此类问题(参阅参考资料以获得链接)。假以时日,这些问题将可能在开放源代码的Wine中同样得到解决。使用命令行与大部分Linux中的应用程序一样,Wine必须在命令行中安装。用户必须回到命令行中来在Wine下运行应用程序。例如,要运行InternetExplorer,用户通常需要在shell中输入wineIEXPLOREEXE。尽管经验丰富的用户喜欢这样做,但初学者会发现这比较困难,而且不太可能懂得起别名等快捷方式。配置CDROM和驱动器映射等工作必须手工完成。这对初学者来说也是个问题。取消对隐藏文件的隐藏如果挂载CDROM时没有使用专门的unhide选项,那么安装CD上的一些文件可能会无法找到,从而导致安装失败。调整配置Wine安装很少能直接使用(对它来说也就是从tarfile解开)。通常需要进行全面的调整;例如,一个程序的安装可能与您在配置文件中设置的Windows版本不相容;而修改那个版本又可能会影响一些已安装的应用程序。对很多DLL来说也是如此。为此,Wine提供了一个巧妙的修复,让您可以设置特定于应用程序的属性。不过,一般的用户可能不会像我们一样满意。额外的安装步骤大部分应用程序的安装过程都不是标准的。例如,当我们安装InternetExplorer6时,必须跳过一些步骤,比如DCOM98的定位与安装。对用户来说,这类事情可能是最大的障碍。注意,这些并不是病症,而是举例说明了是哪些种类的事情导致对一般用户来说Wine看起来复杂而且困难。Wine所不能做的看完Wine的可用性问题后,现在让我们来总结在尝试使用Wine时一些常见的技术问题。缺少DLL,这可能是最常见的问题:很多安装由于缺少DLL而失败。人们应该熟练使用调试器来决定下一步如何去做。(稍后将深入讨论调试器)。DLL版本问题一些安装程序在开始之前会检查现有的系统DLL。Wine解决这一问题的方法是,创建假DLL以满足安装程序的需要。不过,有一些安装程序会更进一步并深入检查DLL以获得它们的版本。这对假的DLL来说要求太高了,会导致安装失败。DLL加载次序Wine有对很多WindowsDLL的实现,而且如果可用,它还可以使用原始的WindowsDLL。如果两种DLL都可用,好像显然应该选择总是使用Windows自己的DLL,但实际上WindowsDLL有时会包含不能被满足的依赖。要确定是更应该使用Wine的DLL还是应该使用本机DLL,惟一的方法是,基于各个应用程序反复进行试验。DLL中的函数当一个WineDLL没有实现Windows中相应的DLL的全部功能时,应用程序可能会遭遇函数调用失败。由于DLL是动态加载的,可能没有法事先知道会发生这样的事情。这是一个复杂的问题,有一些可做的工作,但最终实际来说它只是取决于应用程序的代码如何编写。有一些因素会减轻这些问题。一方面,您将会一个一个地遇到这些问题,而不是一次遇到全部问题,这样处理起来要容易些。另外,您遇到的那些问题可能其他人曾遇到过并已经解决(而且解决方案已经公布出来)。Wine用户组非常活跃,会提供许多帮助,每周一次的Wine时事通讯(参阅参考资料)是极好的信息资源。Wine中还没有实现的Win32API在Wine中,很多Win32API5的函数是残缺不全的。最常见的原因是,相当多的Win32API并没有被文档化。这就意味着一个特别的应用程序可能会调用某个函数,而完全没有关于此函数的可用资料。例如,我们在运行一个简单的RPC程序时发现了RtlAnsiCharToUnicodeChar这个函数。在MSDN上的搜索结果显示没有关于这个函数的资料,而且没有关于所有RtlXXXX类别函数的资料。因此,如果它们在Wine中的实现对一些应用程序来说至关重要,那么人们可能只有去猜测它们的行为了。商用的WineCodeWeavers为Wine做了很多工作。多年来他们为Wine项目贡献了很多代码,他们出售商用版本的Wine,其改进的用户界面解决了我们在本文中提出的很多问题。例如,CodeWeavers的二进制安装文件会在用户的开始菜单中添加一个Crossover条目;安装后,绝大多数Crossover相关的任务可以通过开始菜单条目来完成。在开放源代码的Wine中,所有这些任务--安装、程序执行以及其他任务--都必须在命令行中执行。此外,CodeWeaversCrossover将会尝试去为新安装的软件包配置一个合理的默认值,如果需要的话会在安装完成后自动重新引导,并以其他形式减轻用户的负担。CodeWeavers使用开放源代码的Wine作为他们的Crossover产品的基础,所以,除非遇到上面我们讨论过的可用性问题,否则,在其中一个产品中能运行的应用程序,在另一个产品中同样也能运行。要深入了解CodeWeavers和Crossover,以及要获得可以在Wine上运行的应用程序列表,请参阅在参考资料中列出的链接。应用程序安装分析由于Wine支持Windows可执行文件的运行,您会想当然地认为可以使用程序的安装程序从头安装,这是正常的。不幸的是,几乎不会那样。对Windows安装过程的理解将有助于解释原因。下面非常简单地描述了Windows安装程序通常要做的事情的(不必是这个次序):将文件拷贝到一些目录。注册DLL,并将其他应用程序相关的信息添加到注册表中。在安装过程中,有时会检查DLL的版本(如前面所提到的)。修改INI和一些其他配置文件。因而,Wine会遇到两种类型的问题,必须按顺序解决:安装过程中的问题。执行过程中的问题。在调试Wine安装的过程中,如果您同时有一个可用的Windows系统的话会非常有帮助。那样,您可以对Windows安装使用追踪器以确切断定哪些文件被拷贝,哪些注册表条目被添加或更新,哪个INI文件被修改,等等。记录安装步骤的顺序并与失败的Wine安装相比较,是故障诊断的好向导。在Linux上安装Wine如果您正在使用RedHat或者SUSE,最简单的方法是从CD安装Wine。不过,如果那些CD比较老,您可能需要通过源文件安装,因为Wine项目经常更新。如果通过源文件安装,您会发现Wine用户指南(参阅参考资料以获得链接)是一份价值无法估量的资料。简化的安装过程如下:解开源文件后,切换到tools目录下以用户身份运行/tools/wineinstall。在tools目录下运行winecheck脚本来检查安装。您可能不会获得100%的成功,但只要没有关键问题就行。Wine的所有配置都保存在~/wine/config文件中。这个文件很容易理解:它描述了您希望将Linux文件系统的哪部分看作是WindowsC驱动器,以及DLL的加载次序等其他的细节。您应该可以快速进行了。例如,要安装WinZip81,您可以下载安装程序并在命令行中运行winewinzip81exe。快速浏览一下可以了解很多内容:您可以看到WinZip在运行,它的文件浏览器组件显示出熟悉的Windows驱动器C、软盘驱动器A、一个CD-ROMM以及另外的Z驱动器。您可以猜到,所有这些都映射在我们上面提到的~/wine/config文件中。

使用wine可以达到您要的效果,但不是100%成功,个别的软件会报dll错误。

以下是详细使用方法:

在安装前请确保你的系统中装有 gcc 3x (推荐使用 32x ),很多读者反映在 gcc 29x 上编译存在问题。

wine 的安装配置

wine 的最新版本是 20030408 , 下面将介绍如何安装配置 wine。

1 下载 wine 并解压缩:

请到 wine 的官方网站下载最新的 tarball 压缩文件包。或者,如果不想手工打中文输入法的补丁的话,可以直接下载打好补丁的 wine-20030408。(如果你是下载的这个已经打过补丁的,就可以跳过下一步) 这个版本的文件名为 Wine-20030408targz

tar xvfz Wine-20030408targz

现在你可以在当前目录中看到一个名为 wine-20030408 的目录。以下假设你将 wine 解压缩到 ~/wine-20030408下,即你在你的home下,运行上述命令。

2 下载并应用中文输入法补丁:

如果你的手头上已经有一个现成的官方版本的 wine-20030408,那么你可以下载wine中文输入法补丁(包括中文复制、粘贴的支持),并将其存到 ~/wine- 目录下。

应用之:

cd ~/wine-20030408

patch -p1 < xim_copyparse_0417diff

注:这个patch也可以使用在最新的(20030410)CVS上。

3 编译安装 wine :

cd wine-20030408

/configure --prefix=/usr/local/wine

注意:强烈建议指定安装目录,此处为 /usr/local/wine,这样后面会方便很多。

请检查此命令的输出,如果他没有找到一些需要的包,而你又希望使用那个包提供的功能时,请安装相应的 devel 包(mandrake 下的命名方法)。

一切正常后,编译并以root 身份安装

make depend && make && make install

4 配置 wine:

在用户的HOME中建立目录和配置文件

cd

mkdir wine

cp wine-20030408/documentation/samples/config wine/

使用您习惯的文本编辑器,修改wine/config 使其反应您的系统状态。打开 config 后,主要修改最前面的定义驱动器的部分。首先,删除对Drive A 的设定的一行:([Drive A]的最后一行)

"Device" = "/dev/fd0"

然后请根据你的机器的情况,修改剩余的驱动器。下面给出我的一部分

[Drive C]

"Path" = "/backup/c_drive"

"Type" = "hd"

"Label" = "Dos Drive"

"Filesystem" = "win95"

[Drive D]

"Path" = "/mnt/d/"

"Type" = "hd"

"Label" = "My Home"

"Filesystem" = "win95"

建议:不要将 c: 指向一个存在的真实 windows 盘,而是自己建立一个 “假”的,比如,你想在 /backup/c_drive 下建立一个虚拟 windows 的 c 盘,则执行如下命令(执行以下命令一般需要root 权限)

mkdir /backup/c_drive

cd /backup/c_drive

mkdir -p windows windows/Start\ Menu \

windows/Start\ Menu/Programs windows/Fonts windows/system32 windows/Desktop

ln -s /windows/system32 windows/system

为了可以运行不论处于你linux 任何目录下的程序,建议添加一个盘,如下(盘符是你现有的下一个就可以了)

[Drive G]

"Path" = "/"

"Type" = "hd"

"Label" = "root"

"Filesystem" = "win95"

别的基本不需要修改,默认值就可以了。如果你的硬盘上有 NTFS 格式的分区,请参阅 常见问题。

注意:请根据你的系统来配置以上的目录,否则将无法启动运行wine。

5 配置共享库目录:

由于我们自己指定了安装目录,所以共享库不位于系统已知的目录中,为了告诉系统到哪里找,可以修改 /etc/ldsoconf 文件,但是,一个更好的方案是使用 shell 的环境变量:LD_LIBRARY_PATH。 在一个 console 中,执行命令

export LD_LIBRARY_PATH="/usr/local/wine/lib"

现在在这个 console 中,你可以继续下一步了。(是不是觉得太麻烦了,每次要执行一个 windows 程序就要这样做,不用担心,后面提供一个脚本,自动完成这些工作)

6 复制字体:

复制几个字体到 windows/Fonts 下,推荐至少将 simsunttf 复制/连接到这个目录下(不可一个字体都没有,否则会造成 X 自动退出)。

7 测试你的 wine:

在命令行输入 /usr/local/wine/bin/wine notepad ,如果成功看到了 记事本 程序,则说明 wine 已经可以正常工作了,试试中文输入,中文的复制和粘贴(目前仅支持wine 与 KDE 程序间中文的复制和粘贴,不支持gtk/gnome的程序);如果出现错误信息,请根据提示检查上面的各步。如果你得到的错误信息类似于找不到 libntdllso 或者 versiondll 之类的,那么你应该是忘记了做 步骤4;如果发生如下的错误:

spider c $ wine notepad

Invalid path L"e:\\" for L"temp" directory: does not exist

Perhaps you have not properly edited or created your Wine configuration file,

which is (supposed to be) '/home/spider/wine/config'

/usr/local/wine/bin/wine -all notepad

说明你的[wine]下的 "Temp" 属性指向了一个不存在的目录,将其改为指向 /tmp 就可以了:如第4步,你将G 指向 /,则这样设置:"Temp" = "G:\\tmp"

优化我们的 wine

现在,wine 可以正常使用了,但是,还是太麻烦了,所以,我们来进行一些小小改进。同时,为了正常运行 xdict,我们也要作些 关键性 的调整。

1 下载 wine 工具包,其中有一个名为 wine 的文件,他的工作就是自动设定 LD_LIBRARY_PATH 目录。如果你的安装目录不同于我的,那么请修改之。将其保存到 /usr/bin 下,并使其可以执行

chmod +x /usr/bin/wine

2 安装支持文件 dcom98:为了在 linux 下安装使用 installshield 做的 setup,必须要装这个东东,请在微软 下载,并使用 wine dcom98exe 来安装。如果在复制完文件后报告错误:A newer version of DCOM95 or DCOM98 has been installed , 那么请先做下一步。

3 可以在本站下载 常用的 win98 DLL包,并将其解压到你的虚拟C盘下的 windows/system32 下面。

4 可以修改 windows 的默认用户和默认的用户组织:打开 ~/wine/systemreg 中的RegisteredOrganization 和 RegisteredOwner 就可以了。

wine 的自带工具以及使用技巧

本部份简要介绍几个 wine 自带的工具及其功用(仅介绍比较常用的):

1 uninstaller: 反安装已经安装的程序

在 console 中输入: wine uninstaller,然后你就知道了

2 progman: 程序管理器

wine progman, 我觉得这个工具类似于 windows 的任务条。

3 regedit: 维护注册表

wine regedit: 与windows的 regedit 在功能和命令行参数上完全一样,不同仅仅是这个没有 GUI 界面。使用这个工具可以安全的向注册表中导入信息。如果你想用 wine 来玩 starcraft 或 diable II ,又想上战网的话,那么可以用它来导入注册表文件。

4 winecfg: 图形配置工具

wine winecfg: 可以使用这个工具来对 wine 进行一些基本的配置。功能比较有限,聊胜于无吧。

5 winefile: 资源管理器

wine winefile: windows 下的资源管理器,想必是使用windows 的用户最常使用的软件吧,这个就是那个的一个功能子集。

6 winemine: windows 扫雷

wine winemine: 对,就是 windows 下的扫雷,在穷极无聊时的一种解决方案

7 regsvr32: 自动注册动态连接库

wine regsvr32: 某些软件安装时,出于某些原因可能要自己使用这个来注册几个DLL文件。

常见问题:

1无法输入中文?

答:我的结论是,在 gbk 或 gb2312 时可以输入中文,但是在 gb18030 下不行。请改变 locale 为 GBK 试一下。

2退出wine时,出现如下错误:

Unhandled exception: privileged instruction in 32-bit code (0x414f56a8)

In 32-bit mode

0x414f56a8 (_end+0x406e0c in libGLcoreso1): movl %gs:0x0,%eax

答:试试将 glx 从 XF86Config 配置文件中注释掉。

3 发生类似如下的错误: err:module:import_dll Module (file) COMCTL32dll (which is needed by J:\Setupexe) not found,怎么解决?

答:这类错误是由于在 c:\windows\system32 (system) 目录下找不到某个需要的 native 的 DLL 文件造成的(此例是 COMCTL32dll )。解决方法是从一个真正的 windows 安装盘下的相应目录copy 过来一个。

4 如果一个分区是 NTFS 的,安装的是 win2000/winxp,应如何设置 wine 的driver 部分?

答:不建议使用任何 NTFS 分区上的文件,因为linux 内核对 NTFS 的支持,仅限于读,而如果要写入的话,是很危险的(所以默认的 mount 是只读的)。因此,请使用 fat32 分区或任何 linux 格式的分区。

5 编译时发生错误?

答:首先请确保你的系统中装有 gcc 3x (推荐使用 32x );wine 在 GNU/Linux 主流发行版的较新版本中以及 基于源代码的发行版中编译不成问题,但是在 FreeBSD 下好像不可以。

6 在运行程序时总是得到类似如下的错误提示:

wine: chdir to /tmp/wine-root/server-305-242e2 : No such file or directory

答:这是因为你用root 用户运行wine 的问题。解决方案如下:退出 X,删除 /tmp 下所有东东,然后用普通用户运行wine。我的建议是,平时也不要使用 root ,使用一个普通用户既安全又可以避免很多不必要的麻烦。另一个解决方案 (出处) 是在编译的时候指定参数:

/configure --with nptl --with-x --prefix=/usr/local/wine

后面的步骤与前述过程相同。

7 某某程序是否可以使用wine来运行?

答:关于某个英文软件是否可以在 wine 下正常(或基本正常)的运行,大家可以到 winehq 看看,如果找不到你关心的程序,可以到应用程序资料库搜索一下,看看其他用户的 comments,就知道是否有人运行成功了。

测试通过的输入法

尽管理论上,所有的输入法都应该没问题,但我认为这个部分可以让你知道你喜爱用的输入法是否已确认被支持。

以下是我测试过的输入法:(括号中为测试过的版本)

xsim (0394)

chinput

erb-fcitx (18x)

scim (040,031)

minichinput 是由 chinput 修改而成, fcitx 是 erb-fcitx 的基础,所以我觉得这2个输入法也应该 没有问题。

现在的这个补丁已经不需要修改任何输入法,就可以正确的使用退格等键了,并且修正了在QQ中使用时,会crash的问题,请大家试用。如果先前你下载了 旧补丁, 你可以先取消掉(patch 的 -R 参数)那个补丁,再应用这个新的就可以了。

如果您有好的建议和、或修改意见,请不吝赐教:)

如果你成功的安装上了,也请麻烦通知我一声,如果可能的话,我也希望你能告诉我你的运行环境:发行版及其版本号,KDE的版本,gcc的以及你所使用的输入法的名称和版本,多谢。

注:

以上在 mandrake 90, kde 303,gcc32

gentoo 14rc_2, kde 310, gcc 32

gentoo 14rc_3, kde 311, gcc 321

Linux和Window是两种不同的 *** 作系统。

我有点不太明白你的问题。

第一种理解:要在Linux下开发Windows的程序。

答案:可以直接在Windows下开发就可以。然后可以通过一些软件让你的Windows软件跑在Linux下,这些软件比如有cygwin。不过目前这类软件的兼容性不能达到100%。

第二种理解:在Linux下开发和Windows一样差不多的程序。这种程序不需要在WIindows下跑,它们实际还是Linux下的程序。只是会显示出Windows那样的窗口状态。

答案:首先你需要一个在Linux运行的Window环境。在Linux下比较有名的Window软件叫XWindows。你可以在你的Linux中运行startx来启动它(你装Linux一定要装了X才可以)。然后有一些开发包支持你在Linux开发有窗口的程序。比如QT,GTK等。

关于装双系统,我有发言权。前几天本人自己在家也试着装了Linux与Windows的双系统,以为要费一番头脑,结果安装后发现是真的so easy。好东西要一起分享,你可以按照B站上面搜如何安装Linux和Windows系统的教程学,只要按照 *** 作步骤来,相信你也可以成功安装。

以上就是关于如何安装和使用Wine,以便在Linux上运行Windows应用程序全部的内容,包括:如何安装和使用Wine,以便在Linux上运行Windows应用程序、如何在Linux中运行Win32下的软件、Linux 下能不能开发windows的应用程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9474068.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存