AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1018078
Accepted
Tim
Tim
Asked: 2018-03-22 14:05:48 +0800 CST2018-03-22 14:05:48 +0800 CST 2018-03-22 14:05:48 +0800 CST

这个在 Wine 下运行的 Windows 程序是否无法识别其参数的绝对路径名?

  • 772

我在 wine-3.1 下的 Ubuntu 16.04 中使用PDFXCview.exe。

当我将 pdf 文件指定为 的参数时PDFXCview.exe,pdf 文件的绝对路径名不会PDFXCview.exe找到 pdf 文件,而 pdf 文件的相对路径名可以。

例如:

wine /path/to/PDFXCView.exe my.pdf

将my.pdf在 PDFXCView.exe, 而

wine /path/to/PDFXCView.exe "$PWD"/my.pdf

没有。

  1. 绝对路径参数PDFXCView.exe仅由使用,而不是由 使用wine,因此将绝对路径转换为可识别的葡萄酒路径没有帮助。例如,wine /path/to/PDFXCview.exe "$(winepath /tmp/test/O.pdf)"不PDFXCview.exe查找并打开 pdf 文件,其中 .the wine-recognizable path 是:

    $ echo wine /path/to/PDFXCview.exe "$(winepath /tmp/test/O.pdf)"
    wine /tmp/test/PDFXCview.exe /home/t/.wine/dosdevices/z:/tmp/test/O.pdf
    
  2. 相反,当我将文本文件指定为 的参数时 notepad.exe,我可以指定文本文件的绝对路径名或相对路径名,并且notepad.exe可以找到要打开的文本文件。例如,两者都wine notepad "$PWD"/note可以 wine notepad note让记事本找到并打开文本文件 note。

以上情况是否也适用于其他人?

PDFXCview.exe无法识别其参数的绝对路径名,而只能识别相对路径名的原因是什么?

我想知道上述问题PDFXCview.exe是因为程序本身还是因为酒?我没有要测试的 Windows,也想知道PDFXCview.exe在 Windows 中的行为是否与在 Wine 中相同。

谢谢。


Drive 标签的屏幕截图winecfg

在此处输入图像描述

wine pdf
  • 1 1 个回答
  • 684 Views

1 个回答

  • Voted
  1. Best Answer
    Thomas Ward
    2018-03-23T06:11:54+08:002018-03-23T06:11:54+08:00

    您正在为 Wine 正在执行的 Windows 可执行文件提供绝对Linux 风格的路径,而不是将该路径参数提供给 Wine 本身。因此,您必须将路径之后的每个参数都.exe视为 Windows 样式的参数(即wine /home/$USER/.wine/drive_c/path/to/Windows/executable.exe [Windows Style Arguments])。

    完整的 Linux 样式路径适用于notepad.exe,但考虑到notepad.exe它可能不是纯 Windows版本的记事本,它包含在 Wine 设置中,并且可能经过调整以接受 Linux 路径(如/tmp/test/O.pdf)。

    然而,大多数wine可以执行的应用程序都没有这些调整,因此只接受 Windows 样式的路径。因此,您需要为这些应用程序提供一个 Windows 样式的路径,格式类似于C:\Windows\System32\...但与文件的实际位置有关,并且与 Wine 中的驱动器映射有关,同时考虑到 Bash / Linux 控制台样式解释*的路径。

    首先,找到驱动器映射以及它们在 Linux 文件基础架构中“存在”的位置。 为此,请加载winecfg,然后在 Wine 配置窗口中,转到“Drives”选项卡。它看起来像这样:

    Wine 配置:驱动器

    如您所见,我有C:它映射到 Winedrive_c目录,在这种情况下位于/home/teward/.wine. 我还有一个M:映射到我的/mnt/目录的驱动器,这是相关的,因为我M:\在 Wine 应用程序中引用了一些东西。

    最相关的是Z:映射,它映射到我的 Linux 环境中的根/分区。这通常是默认映射,但不一定会在您的环境中(因此请确保它是)。无论哪个 Wine 驱动器映射到/,您都需要使用。如果一个不存在,您将需要添加一个与/您使用 Windows 应用程序打开的数据实际所在的目录或实际目录匹配的驱动器映射。从技术上讲,您可以先T:映射到/tmp/然后再做T:\0.pdf,但我并没有假设我的答案是这样。

    因此,出于此答案的目的,我将假设它Z:实际上已映射到/并从现在开始在我的答案中使用它。

    您需要采用 Linux 路径并将其从Z:\驱动器根目录转换为 Windows 样式。因此,对于/tmp/test/0.pdf在 Linux 中,您实际上会给出它'Z:\tmp\test\0.pdf'(包括单'引号,因此 shell 不会混淆路径的解释*)。通过这种方式,Windows 风格的应用程序获得了它可以读取和理解的路径,而不是它不能的路径。

    很少有 Wine 应用程序实际上能够理解/foo/bar/bazLinux 的样式路径,并且大多数能够理解的应用程序都是在开始设置 Wine 时进行调整和安装的。因此,最好为在 Wine 中运行的 Windows 应用程序提供 Windows 风格的路径,而不是 Linux 风格的路径。


    * 当我提到“解释”时,我指的不是路径:,而是\路径中的那个。尽管您的路径不包含空格,但我也指的是空格。在 Bash 语法中,\用作转义字符的一部分。此外,在命令行中,参数以空格分隔,因此它不知道如何处理路径中的空格,因此您必须使用反斜杠对其进行转义。因此,对于会是什么C:\Program Files\Foo\bar.exe,您实际上必须投入C:\\Program\ Files\\Foo\\bar.exe路径。但是,使用默认的 Bash shell,您可以通过用单引号 ( ) 包裹路径来否定这种对斜杠和空格的误解,单引号 ( ') 将其视为传递的全部文字参数,'C:\Program Files\Foo\bar.exe'

    • 1

相关问题

  • 是否有 Wine 兼容软件的目录?

  • 如何安装 Windows 软件或游戏?

  • 如何让 .NET 2.0 SP2 在 wine 中运行?

  • 为自定义 PPA 修补 Wine 的正确方法是什么?

  • 如何在 Ubuntu 中运行 Windows XP

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve