veket官方网站论坛

veket

 找回密码
 要注册
搜索
查看: 58023|回复: 121

在veket中用wine安装运行win软件的一般流程

[复制链接]
发表于 2011-2-16 16:20 | 显示全部楼层 |阅读模式
本帖最后由 perryfa 于 2012-5-11 14:04 编辑

(声明:这个帖子只是给veket新手提供一个参考,一些基本的概念和做法,并未涉及太多技巧,老鸟们自动飘过吧。)

所谓wine,其实就是一个在linux系统中的WINDOWS平台模拟器,尽管wine官方说它不仅仅是个simulator,不过我的水平很菜,只知道它其实就是个模拟器。
既然是模拟器,那么有两点是不言自明的:
1. 并不是所有的windows软件都能wine成功的,有些比较困难。veket整个系统加上无数的应用软件,那也只有400M上下,所以,veket里面集成的微软的库文件当然是非常有限的(整个程序也就是十几M的容量)。如果所有的windows程序都能在veket集成的wine里完美运行,那,你让那些好几G的windows系统情何以堪呢。
2. 既然是用模拟器运行,那就肯定效率比较低,占用资源比较多,这个道理想必大家都能明白。
基于以上两点,如果日常需要频繁地使用win软件,那还是在win系统里运行比较踏实。

现在介绍一下wine一个软件的通常做法。
首先,在veket里用win软件,最好选择绿色免安装的软件,这样比较容易。如果没有绿色的,必须要安装,那也是可以的。

举例说明吧。例如我下载了一个KoolMoves,一个动画制作软件。从vc用驴子拉来的。是一个zip格式的压缩包。

第一步 准备工作
这一步和veket没什么关系,你在win下做也是一样的。
解压缩,在veket里直接双击zip文件就可以了。
看一下包里都有什么东西,如果有说明就读下说明。我下载来的这个软件包里有两个.exe文件:
fo-k801.exe
libraries.exe
我判断了一下,这种画图的软件有时会提供素材库,那么libraries.exe很可能就是素材库,所以,安装程序应该就是fo-k801.exe。不管我猜得对不对,试一下就知道了。

第二步 安装
如果你下载的是免安装的绿色软件,那么这一步就不需要了。看看解压后的软件目录里有没有注册表文件(.reg),如果有就跳到第三步 - 导入注册表。如果没有,跳到第四步,直接开始运行程序就是了。

如果程序需要安装的话,那就按照下面的步骤走。
如果是.exe格式的安装文件,在veket里面的文件管理器thunar直接双击就可以的,但是,我还是建议用命令行,因为,这样的话你可以看见安装过程是否有出错。如果你自己看不明白出错信息,你可以把终端里出现的信息复制下来,到论坛求助。
打开终端,先cd到你放软件的目录,在本例中,我键入:
# cd /mnt/sda5/veket-storage/software/wine_stuff/KoolMoves
这里要注意一点,很多win软件的目录名或文件名里会有空格,linux是不允许的,所以,如果遇到有空格的文件名/目录名,最稳妥的办法是用双引号把文件名/目录名括起来,像这样:
# cd "/mnt/sda5/veket-storage/software/wine_stuff/KoolMoves"
这样无论里面有什么都没关系了。注意:双引号必须是英文状态的。
如果你能确认文件名或目录名可以改的话,修改文件名/目录名,把空格去掉,那也是可以的。我就常常这么做。
上面这个路径是我解压软件的目录。看上去很长,这里有个技巧。对于文件的路径,你可以先在thunar里面走到这个目录。在thunar的“视图”- “区域选择器”里选“工具栏风格”,这样在工具栏里就会有路径出现,你可以复制它,然后到终端里粘贴。这样可以保证路径不会打错。
继续打命令:
# ls
该目录里所有的文件/目录都列出来了。在终端上cd进入一个目录之后,我总是习惯先打“ls”列出当前目录下的文件/目录名,这样可以确认自己没有走错地方,另一个原因是我懒得去敲文件名字,列出来以后,我只要涂黑我要的文件名,直接到命令行摁鼠标中键粘贴,这样即省事,又能保证文件名不会打错。
现在开始尝试安装,键入
# wine fo-k801.exe
如果程序名里有空格的话,就这样:
# wine "fo-k801.exe"
回车后,安装界面跳出来了,证明我先前猜对了,这个文件就是安装用的。接下来就按照安装界面的引导一步步走就是了,和在win下安装没区别。

很多软件的安装文件名字起得比较明显,会在文件名里有setup或instal字样,这样就不需要猜了。
大部分的软件的安装文件都是.exe,但是也有些安装文件是.msi后缀,对于这种文件,wine的命令稍有不同,要打:
# wine msiexec /i xxxxxx.msi
"xxxxxx.msi"是安装文件名。

安装程序的目录,默认是:c:\Program Files
在veket里面,这个目录是wine虚拟的,实际程序会装在这里:
/root/.wine/drive_c/Program Files
关于wine的路径,要稍微注意一下,脑子要转个弯。在wine的软件操作中,选择路径时会出现两个盘符,“c:\”和“z:\”。
这个“c:\”和你进入win系统时的c盘完全没关系,是wine虚拟的,其实就是veket中的一个目录,在wine中:
c:\ = /root/.wine/drive_c
z:\ = /  (也就是veket系统的根目录)
所以,每次你使用wine安装和运行win程序,涉及到路径时,自己要转换一下。

如果安装的程序有菜单项,一般来说会在这两个目录有文件出现:
/root/.wine/drive_c/users/Public/Start Menu/Programs 或
/root/.wine/drive_c/users/root/Start Menu/Programs

如果安装的程序有桌面快捷方式,那就会出现在:
/root/Desktop

如果你使用lucky8k-veket-3,安装以后,在系统菜单的下部会出现一个“其他软件”的项目,里面就会有你安装的win软件的启动项,或者还有卸载、帮助之类的项目。

在安装过程中,要注意看终端出现的信息,会有很多信息出来,大部分信息都是正常的,如果出现not found之类的,就要注意一下。看看缺了什么东西。有没有可能补上。

第三步 导入注册
有些软件带有reg文件,很多绿色软件都有。就是写注册表。windows里最讨厌的东西。
在这里:
/root/.wine/drive_c/windows
这个目录里面有个“regedit.exe”文件,双击之,注册表编辑器就跳出来了,用惯win的同学应该非常眼熟的。点菜单里的“注册表”— “导入注册表文件”,就可以导入.reg文件了。

第四步 运行程序
第一次运行程序,建议不要用菜单打开,还是用终端比较好,因为不保证你的软件一定能正常运行,还是需要看一下出错信息。
具体操作和第二步安装软件的步骤几乎一样,
# cd "/root/.wine/drive_c/Program Files/KoolMoves"
这个目录是刚才安装的时候创建的,软件的东西都在这里,找到运行程序的文件,在我这个软件中,文件是“koolmoves.exe”。
注意,这个路径里的"Program Files"这个目录名字中间就有空格,因为这是win系统默认放应用程序的目录,所以只能让它保持原样,不能把空格改掉。
# ls
# wine "koolmoves.exe"
程序就正常打开了。

如果程序没有正常打开,有些软件编得比较体贴,会有告警窗口跳出来出来,那你就看下是什么错误信息。如果没有错误窗口,那也不要紧,我们采用终端运行程序其实就是为了看信息,到终端里去看错误信息。
和上面的安装过程一样,终端出来的大部分的信息是正常信息,要注意看是否有“xxx.DLL”这种字样出现,类似像这样:
err:module:import_dll Library MFC42.DLL (which is needed by L"C:\\Program Files\\RSIGuard\\RSIBoot.exe") not found

错误信息一般有两种,严重的就是“err:......”这种,这是必须要解决的。还有一种错误是不太严重的,经常是不管它也能运行程序,就是“fixme:......”,这种可以暂时不管它。
上面这条信息就是一条严重的错误,意思是说缺少库文件了,说RSIBoot.exe这个程序要求“MFC42.DLL”这个库文件,而我们的wine里没有。所以需要我们自己去补上。还有一种情况,并不是找不到文件,有可能是版本不对,我wine过一个软件,库文件在wine目录里是有的,但是软件还是报错,我从网上下载了一个,对比之下发现,wine里面带的dll文件只有1K,而网上下载的有60多K,覆盖以后软件就可以运行了。
获得dll文件途径有两个。
最简单的,如果你的机器是win和veket双系统,直接到windows系统所在分区去拷贝,像我的机器就在这里:
/mnt/sda2/Windows/System32
就是c盘的win系统里面。
到里面去找你要的DLL文件,如果找到了,复制到这里就行了:
/root/.wine/drive_c/windows/system32
要注意的是,有些软件win7下本来就会运行出错,假设你的系统是win7,这样的话,你自己机器上的DLL有可能不行。当然,也有可能根本就找不到DLL,那么就有第二个方法 -  去网上下载。
例如,去这个网站:
http://cn.dll-files.com/
基本上所有的dll都能找到,而且都可以free下载。
在系统中加入DLL之后,回到这一步的一开始,重新打"wine xxxxx.exe",看看程序是否能正常打开,有时候这种尝试要重复多遍。
注意一个问题。有些 win程序编写得比较花哨,例如迅雷,有悬浮窗,你可以尝试一下,看看能不能正常工作,如果有问题,就要关掉它。总之,wine一个windows程序,大致能用也就算达到目地了,不要指望它能达到在windows系统里完全相同的效果,理由么,我一开始就说了。

最后,解释一下“winetricks”。这条指令是用来安装一些windows的库文件包的,意思和我上面说的缺少dll文件自己去补是一样的。但用这个指令会自动从网上下载一个包(不仅仅是单个的dll文件)。
具体用指令可以安装哪些包,你可以打“winetricks -h”来看,所有的包都会列出来。
至于这些包是做什么的,什么样的软件需要安装什么额外的包,这个,一时半会儿说不清楚了,你需要自己去摸索。
例如,如果有些软件从网络升级时遇到问题,可以装“wininet”这个包,就是这样:
winetricks wininet
又例如如果我要运行一些涉及网络的软件(如Foxmail),我会先把“ie6”这个包装上,因为一些软件编写得很是讨厌,没事就会去找找ie的库。
又例如如果装QQ2010,就必须要装vcrun6和vcrun2005,要运行wps就要装dcom98和gdiplus。
如果你对win的函数库很熟,那么我想尝试这些包应该没什么问题。我自己对win是小白,用到时才会去琢磨,用不到我就一无所知了。

基本上就这些了。是否能成功wine一个软件,主要是看软件本身的复杂度,如果软件比较复杂,那么就要取决于你能否捕捉到出错信息,并且是否懂得采取适当措施,所谓技术应该就体现在这里了,无非就是google、尝试、经验积累,wine或者编译linux软件,方法都是一样的。
发表于 2011-2-16 22:37 | 显示全部楼层
楼主辛苦了,这个帖好给力,方便新手。
发表于 2011-2-16 22:50 | 显示全部楼层
方便新手的好帖,辛苦楼主了。
发表于 2011-2-16 23:37 | 显示全部楼层
支持。
发表于 2011-2-17 10:09 | 显示全部楼层
谢谢!顶起来
您需要登录后才可以回帖 登录 | 要注册

本版积分规则

QQ|手机版|Archiver|veket官方网站论坛 ( 粤ICP备 11052856 )

GMT+8, 2024-4-19 14:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表