如何防止葡萄酒在我的主目录中创建目录?

我已经安装了几款游戏,其中大部分游戏都非常棒。 但是,葡萄酒会在我的家中创建目录,用于播放器数据,保存等。

有没有办法在〜/ .winesaves或类似的东西? 我宁愿葡萄酒不乱扔我的主目录。

(葡萄酒:1.5.27,有问题的游戏是SCII和DE:IW)


编辑澄清:

〜/ .wine中的所有内容都很好,但我不希望应用程序创建〜/ GameSaves或类似内容。

您可能需要尝试使用winetrickssandbox选项,这可能对您有所帮助,因为当该设置应用于带有winetricks sandbox的默认WINEPREFIX时,将删除$HOME所有Wine符号链接。

但是, wine仍然具有用户在主文件夹中的权限,并且通常在安装新程序时,安装中的操作可以触发要删除的沙箱。 所以它根本不是一个真正的“沙箱”,但它可能对你的用例有所帮助。

在官方葡萄酒常见问题解答中注意到:

Winetricks确实有一个沙箱动词,至少可以将Wine程序与系统的其他部分隔离开来。 它可以防止错误而不是恶意。 这对于保持游戏不在主目录的随机子目录中保存其设置很有用。

在官方的winetricks页面上 ,有人解释说

如果您想隔离一个应用程序,以便它不会将任何内容保存到您的主目录,您可以尝试’winetricks sandbox’。 这将删除您的主目录的符号链接。 在保存任何数据之前执行此操作,或者您必须将旧的已保存数据从主目录复制到$ WINEPREFIX / drive_c / users / $ USERNAME。

重要笔记

  • 可能需要重复使用wine sandbox选项,即将其包含在运行winetricks sandbox的启动器脚本中,然后启动游戏,因为wine的许多内容都可以触发符号链接的重建。

  • 您已经生成的保存文件夹需要移动到您的WINEPREFIX,例如/home/$USER/.wine/drive_c/users/$USER/"My Documents" ,以便您恢复游戏。 如果wine刚刚创建了一个名为~/gamesaves的文件夹,只需将该文件夹移动到上面提到的位置即可。 否则,请观察目录结构; 如果游戏保存文件夹是~/Documents/Syberia/save确保在/home/$USER/.wine/drive_c/users/$USER/"My Documents"创建等效/home/$USER/.wine/drive_c/users/$USER/"My Documents"

  • 当您将来安装游戏时,请确保在开始时运行winetricks sandbox ,以便游戏将自动开始使用WINEPREFIX作为保存位置,而不是$HOME的文件夹。

对我有用的是创造一个围绕wine的包装纸,用不同的HOME推出wine 。 例如,你可以创建自己的~/bin/wine (假设~/bin在你的PATH ),它设置:

 #!/bin/sh export "HOME=$HOME/.wine/home" exec /usr/bin/wine "$@" 

使用空的WINEPREFIX~/.wine/ ),Wine将在~/.wine/home/创建指向其自己的私有主目录的符号链接。

您可以进一步扩展到不同Wine前缀的多个包装器(例如,对于32位与64位)。

如果安装了bubblewrap ,则可以使用其机制来限制文件系统访问。

例1。 你希望葡萄酒可以访问~/.wine~/Downloads ,但没有别的。 您可以使用此命令:

bwrap --dev-bind / / --tmpfs ~ --bind ~/.wine ~/.wine --bind ~/Downloads ~/Downloads --new-session wine ~/.wine/path-to-your-program

在上面的命令中,我们创建一个新的命名空间,绑定root / ,将内存中的文件系统绑定到~ ,并绑定~之上的两个目录。 在这两个目录之外进行的任何更改都将进入tmpfs,并且一旦bubblewrap(和你的程序)退出就会丢失。

例2。 你不想要复杂的层次结构,你只需要所有与葡萄酒相关的东西都存在于~/.bubblewrap-wine-container 。 而在其他任何地方。 在这种情况下,您可以使用:

bwrap --dev-bind / / --bind ~/.bubblewrap-wine-container ~ --new-session wine path-to-your-program-relative-to-this-directory

如果您要禁止任何这些示例的Internet访问 ,请添加--unshare-net参数。 或者甚至可能--unshare-all看看它是否会启动。 有关更多详细信息,请参阅bubblewrap文档。

Wine将其目录结构保存在〜/ .wine中以模拟Windows目录结构,因此默认情况下,wine下运行的程序无法访问层次结构的上层。 它取决于存储其数据的最终应用程序(或游戏)。 您可以创建一个符号链接,将.wine目录放在其他位置。 就像是:

 cd ~; sudo -s mv .wine /var/cache/wine && ln -s /var/cache/wine ~/.wine 

此命令的说明:1。转到主目录。 成为root用户2.将.wine目录移动到所需位置(在此示例中,它是/ var / cache / wine,如果成功从/ var / cache /创建一个软(符号[我建议您阅读’man ln’)链接葡萄酒给你_home_dir / .wine。