|
发表于 2012-2-19 13:15:59
|
显示全部楼层
我个人的想法是:
- 首先用root身份执行WINEPREFIX='/opt/winebase' winecfg,配置基础wine prefix。如果有安全风险,可以用另外一个受限用户的身份执行。
- 对每一个游戏"GAME",用root身份执行WINEPREFIX='/opt/wine_GAME' winecfg,配置每个游戏的wine prefix,在该prefix下安装游戏。
- 对比每个游戏的WINEPREFIX和基础WINEPREFIX,将单个游戏的WINEPREFIX中与基础WINEPREFIX相同的文件全部替换成symlink,节省空间,也便于更新Wine版本时更新WINEPREFIX。这一步可以用shell script自动实现,不过shell script的编写要费些心思。
几个提示:diff -q -r dir1/ dir2/可以用来找到两个目录中中不同的文件。realpath --relative-to=XXX 可以用来生成相对路径,在ln -s时很有用。 - 为每个用户的每个游戏创建一个WINEPREFIX。除了用户必须有修改权限的文件/目录之外(比如游戏存档目录、注册表文件),其他内容全部从/opt/wine_GAME中symlink过来。。如果不会出现有两个用户同时运行同一游戏的情况的话,也可以考虑赋予/opt/wine_GAME中某些文件777权限,备份这些可能被修改的文件,直接用/opt/wine_GAME的WINEPREFIX运行游戏,在游戏运行完成后复制回备份的文件。
- 编写shell script或者菜单项,允许每个用户执行特定的游戏,在用户运行完程序后做好善后工作。
Post by fpemud;2160260
2. 如果wine升级,drive_c下的dll文件可能也会变化。wine应该会自动更新~/.wine目录吧?手工建立的新wine目录是不是还得手工更新?[SOLVED]
只要WINEPREFIX指定的wine目录,在wine启动时都会自动更新。
嗯,注意权限。每次升级wine之后可能要用root身份升级WINEPREFIX。
Post by fpemud;2160260
3. 能不能禁止wine创建~/.wine目录?
我的所有wine目录应该都会放在/opt里。我装系统的策略是只有root能安装卸载,非root用户只有使用权。
除非您不允许用户直接执行wine,而使用sudo + shell script等机制将游戏封装起来,让wine以另外一个受限用户的身份执行。这样无疑会带来一些麻烦(比如如何保证用户不会破坏其他人的存档文件),但也会带来一些好处(例如下面的“快捷方式”问题不用管了)。
Post by fpemud;2160260
4. 记得以前装wine游戏的时候,系统菜单里会存在游戏的全部windows快捷方式,包括乱七八糟的主页链接,卸载图标。这次我想自己写启动游戏的desktop文件,windows的快捷方式就不让出现在系统菜单里了。我打算装上游戏后搞这个问题,这个你以前有没有做过?
这些“快捷方式”(其实是菜单项)应该会出现在~/.local/share/applications/中,删除它们就好。我不知道如何阻止wine生成它们。
Post by fpemud;2160260
5. 我的/opt/win-prog目录以及内容的owner肯定是root,读写权限也都是root,但这样会导致普通用户在玩游戏时修改不了注册表?这个会不会有影响?
windows注册表真是一个麻烦事。
两种方案: 1. 运行游戏前备份,运行后复原,注意这样可能会导致两个用户不能同时玩一个游戏;2.为每个用户的每个游戏保存一份注册表。
Post by fpemud;2160260
6. 这次准备调用setup.exe安装后,将安装后的wine目录和安装前的做个对比。然后做一个补丁文件(类似原代码补丁),当然如果是大游戏这个补丁可能会有几百兆。
以后安装可以先创建wine目录,再打这个补丁就能把游戏装好,避免了setup.exe的GUI交互,更自动化,甚至可以做成ebuild。
这个应该还是挺复杂的,有人做过吗?
可以做,不算困难,一个shell script就搞定了。ebuild会有版权问题。 |
|