如何在Linux上运行Windows应用程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Linux上运行Windows应用程序相关的知识,希望对你有一定的参考价值。

在linux上运行windows应用程序可以使用virtualbox安装windows虚拟机,也可以直接使用wine来运行windows应用程序。 参考技术A 只能安装相应的虚拟机来支持了,,无法直接在Linux上运行的

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

参考技术A 诚然,在Linux上使用类似于MSOffice这样的应用程序可能是困难的;在这里我们来看一些原因,为什么确实是这样。在开始之前,我们应该指出,CodeWeavers提供的商用Wine已经解决了大部分此类问题(参阅参考资料以获得链接)。假以时日,这些问题将可能在开放源代码的Wine中同样得到解决。使用命令行与大部分Linux中的应用程序一样,Wine必须在命令行中安装。用户必须回到命令行中来在Wine下运行应用程序。例如,要运行InternetExplorer,用户通常需要在shell中输入wineIEXPLORE.EXE。尽管经验丰富的用户喜欢这样做,但初学者会发现这比较困难,而且不太可能懂得起别名等快捷方式。配置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的加载次序等其他的细节。您应该可以快速进行了。例如,要安装WinZip8.1,您可以下载安装程序并在命令行中运行winewinzip81.exe。快速浏览一下可以了解很多内容:您可以看到WinZip在运行,它的文件浏览器组件显示出熟悉的Windows驱动器C、软盘驱动器A、一个CD-ROMM以及另外的Z驱动器。您可以猜到,所有这些都映射在我们上面提到的~/.wine/config文件中。

以上是关于如何在Linux上运行Windows应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在windows下写shell脚本

怎样将windows下写的c程序在linux下编译运行,谢谢?

如何在没有控制台的 Windows 上运行 D-Bus?

如何安装kail linux 和windows

Java应用程序为啥既可在windows中运行也可在Linux中运行

我的程序在 Windows 机器上崩溃,但在 Linux 上运行良好