如何在 winecfg 中的给定位置永久修复 CD 驱动器

如何在 winecfg 中的给定位置永久修复 CD 驱动器

我在 wine 中安装了一些基于 CD 的 Windows 教育软件,它运行得很好,除了由于某种原因它找不到磁盘,除非我手动将路径从默认位置 G:/media/user/cdname/ 更改为 D:/media /user/cdname/,但每次我放入新 CD 时都会重置回 G:/...。有没有办法永久将此位置更改为D?磁盘太多,无法从我的硬​​盘驱动器虚拟安装它们

这是在 ubuntu 19.04 和 wine 4.7 上

编辑- 的输出ls -l ~/.wine/dosdevices

total 0
lrwxrwxrwx 1 user_family user_family 10 Apr 30 18:08 c: -> ../drive_c
lrwxrwxrwx 1 user_family user_family 27 May  2 11:56 d: -> /media/user_family/Geom-9
lrwxrwxrwx 1 user_family user_family  8 May  2 11:43 d:: -> /dev/sr0
lrwxrwxrwx 1 user_family user_family  1 May  1 14:16 e: -> /
lrwxrwxrwx 1 user_family user_family  8 Apr 30 18:08 f:: -> /dev/sde
lrwxrwxrwx 1 user_family user_family 27 May  2 11:43 g: -> /media/user_family/Geom-9
lrwxrwxrwx 1 user_family user_family  8 May  1 15:33 g:: -> /dev/sr0
lrwxrwxrwx 1 user_family user_family  8 Apr 30 18:08 h:: -> /dev/sdc
lrwxrwxrwx 1 user_family user_family  8 Apr 30 22:15 i:: -> /dev/sdf
lrwxrwxrwx 1 user_family user_family 19 May  1 14:38 j: -> /home/user_family
lrwxrwxrwx 1 user_family user_family  8 May  2 11:44 k:: -> /dev/sdd
lrwxrwxrwx 1 user_family user_family  1 Apr 30 18:08 z: -> /

遵循 telcoM 的解决方案可以使 CD 驱动器根据需要显示在正确的 D:/ 位置。但winecfg每次放入新磁盘或位置指向旧磁盘时,我仍然需要进入,并且在程序中出现 no cd 错误。每次只需运行 winecfg 来更新指向新磁盘的指针就足够了,但我希望能够在不进行编辑的情况下启动程序。这是终端输出,除了关闭之外没有对 winecfg 进行任何更改:

user_family@user-pc-home:~$ ls -l ~/.wine/dosdevices
total 0
lrwxrwxrwx 1 user_family user_family 10 Apr 30 18:08 c: -> ../drive_c
lrwxrwxrwx 1 user_family user_family 27 May  3 09:25 d: -> /media/user_family/Alg2-2
lrwxrwxrwx 1 user_family user_family  8 May  2 11:43 d:: -> /dev/sr0
lrwxrwxrwx 1 user_family user_family  1 May  1 14:16 e: -> /
lrwxrwxrwx 1 user_family user_family  8 Apr 30 18:08 f:: -> /dev/sde
lrwxrwxrwx 1 user_family user_family  8 Apr 30 18:08 h:: -> /dev/sdc
lrwxrwxrwx 1 user_family user_family  8 Apr 30 22:15 i:: -> /dev/sdf
lrwxrwxrwx 1 user_family user_family 19 May  1 14:38 j: -> /home/user_family
lrwxrwxrwx 1 user_family user_family  8 May  2 11:44 k:: -> /dev/sdd
lrwxrwxrwx 1 user_family user_family  1 Apr 30 18:08 z: -> /
user_family@user-pc-home:~$ winecfg
000b:fixme:winediag:start_process Wine Staging 4.7 is a testing version containing experimental patches.
000b:fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org.
0019:fixme:ntoskrnl:ObDereferenceObject failed to release 0x1bc50
0019:fixme:ntoskrnl:ObDereferenceObject failed to release 0x1cd40
0019:fixme:ntoskrnl:ObDereferenceObject failed to release 0x1bb70
user_family@user-pc-home:~$ 
user_family@user-pc-home:~$ ls -l ~/.wine/dosdevices
total 0
lrwxrwxrwx 1 user_family user_family 10 Apr 30 18:08 c: -> ../drive_c
lrwxrwxrwx 1 user_family user_family 28 May  3 09:36 d: -> /media/user_family/Geom-10
lrwxrwxrwx 1 user_family user_family  8 May  2 11:43 d:: -> /dev/sr0
lrwxrwxrwx 1 user_family user_family  1 May  1 14:16 e: -> /
lrwxrwxrwx 1 user_family user_family  8 Apr 30 18:08 f:: -> /dev/sde
lrwxrwxrwx 1 user_family user_family  8 Apr 30 18:08 h:: -> /dev/sdc
lrwxrwxrwx 1 user_family user_family  8 Apr 30 22:15 i:: -> /dev/sdf
lrwxrwxrwx 1 user_family user_family 19 May  1 14:38 j: -> /home/user_family
lrwxrwxrwx 1 user_family user_family  8 May  2 11:44 k:: -> /dev/sdd
lrwxrwxrwx 1 user_family user_family  1 Apr 30 18:08 z: -> /
user_family@user-pc-home:~$ 

我想也许我太具体了,所以我尝试使用D:\media\user-family\winecfg 中的更高级别的文件夹,并希望当我放入新磁盘时它会自动挑选出适当的子文件夹,但这不起作用,并且 winecfg 将其重写为无论如何,当我第二次运行 winecfg 时,完整路径。

答案1

请注意,在目录中,和符号链接~/.wine/dosdevices都指向(我假设是 CD 的安装点),并且和都指向CD 驱动器的设备。d:g:/media/user_family/Geom-9d::g::/dev/sr0

当 Wine 未运行时,删除额外的g:符号g::链接:

rm ~/.wine/dosdevices/g: ~/.wine/dosdevices/g::

删除重复项后,您的 CD 驱动器应保留为 D:。


udisks2第二个问题是每个光盘都安装到不同的路径,这是使用子系统处理可移动设备的结果。出于安全原因,udisks2不允许请求安装的用户以任何方式影响安装点的选择。

默认情况下,它会在位置 中为任何本地用户安装 CD /media/<username>/<CD volume name>。通过设置ENV{UDISKS_FILESYSTEM_SHARED}="1"应用于 CD 驱动器的 udev 规则,您可以将默认路径更改为/media/<CD volume name>.但这对您没有帮助,因为 CD 的卷标仍然用作安装点名称的一部分,并且这是根本没有被编程预期的事情wine——至少现在还没有。

但你可以尝试将这一行放入你的/etc/fstab文件中:

/dev/sr0 /media/cdrom iso9660,udf ro,noauto,user 0 0

然后用于sudo mkdir /media/cdrom创建一个空目录,该目录将用作所有 CD 的安装点。

这应该覆盖udisks2对 CD 驱动器的处理,并告诉系统任何 CD 都应该安装到该特定安装点,无论其卷标是什么。这是在 Linux 中使用 CD 驱动器的老式方式,也是wine当前所期望的。

但是,当 CD 驱动器在 中列出时/etc/fstabudisks2可能会也可能不会完全跳过它:您可能会失去 CD 驱动器基于 GUI 的安装功能(我尚未在 Ubuntu 19.04 上验证这一点)。但如果是这样,您现在应该能够以普通用户身份使用mount /media/cdrom和命令,甚至无需使用.因此,使用三个命令编写脚本将非常简单:umount /media/cdromsudo

#!/bin/sh

mount /media/cdrom     # mount the CD before starting wine
wine <your educational program and its options, if any>
umount /media/cdrom    # unmount the CD after wine exits

...然后使用该脚本(可能装扮成漂亮的 GUI 图标或菜单项)来运行教育程序。

相关内容