使用 LibreOffice 替换 Office 时遇到问题

使用 LibreOffice 替换 Office 时遇到问题

我有一个专有程序,它要求用户偶尔对 Word 文档进行非常小的编辑。我想用 LibreOffice Writer 替换 Word。我已将 Writer 设置为可以毫无问题地打开 .doc 和 .docx 文件。但是,当用户通过专有软件生成并打开这些文件时,他们会收到无法找到 Word 的错误。

我怀疑该程序是硬编码来查找 winword.exe 的。有没有办法将 LibreOffice writer 移动并重命名为 winword.exe?我可以制作某种重定向文件吗?不确定如何继续。

答案1

由于您似乎与专有软件供应商有合作关系,也许您可​​以询问他们如何调用 winword.exe 来打开文件。如果他们只是进行系统调用来启动 winword.exe 并向其传递要打开的文件的名称,那么我下面列出的所有或大多数解决方案都应该有效。我将首先列出最简单的解决方案。如果他们使用 COM 或 DDE,则拦截它并非不可能,但需要做更多的工作。

如果他们表示正在进行系统调用来启动 winword.exe(或者如果他们不告诉你,就假设它可能有效并尝试一下...):

  1. 转到安装 LibreOffice Writer 的文件夹。我使用的是 OpenOffice 而不是 LibreOffice,但它们非常相似,因此您可能需要进行一些搜索/调查。
  2. 找到“Writer”.exe 文件。对我而言(OpenOffice),它是:
    D:\Program Files\OpenOffice.org-3\program\swriter.exe
  3. 复制找到的“Writer”.exe 文件并将其重命名为“winword.exe”。
  4. 确保它与现有的“Writer”.exe 文件位于同一文件夹中。
  5. 确保该文件夹在“Path”环境变量中命名。

如果您对此过程有任何问题或疑问,请在评论中提供一些详细信息。


如果上述方法不起作用,您可以尝试“重定向” Winword 的打开方式。有两种方法可以做到这一点:

方法 1:

  1. 创建 LibreOffice Writer 的链接。将链接命名为 winword.lnk 或 winword.exe.lnk。这可能取决于专有程序如何调用 Winword。
  2. 将链接文件放在“Path”环境变量中命名的文件夹中。

根据您使用的 Windows 版本,可能会有多种类型的链接可以创建,有些可能适合您的情况,有些则可能不适合您。

方法 2:

  1. 使用可以编译为“.exe”文件的编程语言(如 C 或 Visual Basic),创建一个小型的“包装器”程序。
  2. 包装程序只是接受命令行参数并调用 LibreOffice Writer,传递参数。
  3. 编译包装器后,将创建的.exe 文件重命名为 winword.exe,并将其放在“Path”环境变量中命名的文件夹中。

如果您发现这些都不起作用,或者他们告诉您他们使用 DDE 或 COM 来调用 Winword,那么 Visual Basic 和 C 都可以编程来响应 DDE/COM 消息/请求,尽管这不是一项简单的任务。


编辑:

您可以查看"Path"像这样的变量:

  1. 单击 Windows 开始按钮(开始按钮),然后单击"Command Prompt"快捷方式。如果你没有看到"Command Prompt"开始菜单上的快捷方式,然后单击开始菜单底部的“搜索”框并输入:
    cmd.exe Enter
  2. 在命令提示符窗口中,输入:

C:>echo %Path%
C:\Windows\System32\;C:\Windows\;C:\Windows\System32\Wbem

C:>

这将显示一个字符串,该字符串是由以下字符串分隔的文件夹列表:";"(分号)。您的计算机上显示的字符串将有所不同。

如果您在文件夹列表中找不到相应的文件夹Path变量,您可以将文件夹名称添加到Path

  1. 点击“开始”按钮(球体)
  2. 在开始菜单上,单击Computer打开"My Computer",然后点击"System Properties"从菜单栏下方的上下文菜单中。或者,在开始菜单上,右键单击Computer并选择"Properties"
  3. 在左边"My Computer"窗口,单击"Advanced system settings"
  4. 点击"Advanced"标签。
  5. 点击Environment Variables按钮

    从这个打开的小窗口中,您可以添加/编辑/删除环境变量。

    环境变量有两种类型。System variables可供计算机上的所有用户使用。User variables可以为每个用户设置不同。

    窗口的上半部分用于管理User variables,底部用于管理System variables。要仅为登录用户管理变量,请在User variables部分,否则在System variables部分。

    如果一个变量同时具有System variablesUser variables部分,然后是User variables部分将优先。

    变量名不区分大小写,因此名为"Path"可能会拼写"path"或者"PATH"不管怎样,都是同一个变量。

    假设你想编辑"Path"在里面System variables部分(这是通常的情况)。

  1. 在里面System variables部分,找到Path变量,并单击它。然后单击Edit...按钮。
  2. 如果你没有找到Path变量(你肯定会),你可以点击New...按钮添加一个新变量并给它命名为Path
  3. 在里面Edit System Variable窗口中,单击“变量值”字段(文本框)。

    为了安全起见,最好复制文本框中的当前文本(值)并将其保存在桌面上的文本文件中。

  4. 将文件夹添加到当前Path移动到文本框中的末尾文本,然后输入;(分号),然后键入要添加的文件夹的完整路径,并单击按钮OK

因此,就你的情况而言,你可能会看到Path变量一开始看起来像这样: C:\Windows\System32\;C:\Windows\;C:\Windows\System32\Wbem

并将文件夹添加到Path变量可能看起来像这样: C:\Windows\System32\;C:\Windows\;C:\Windows\System32\Wbem;D:\Program Files\LibreOffice\program\

您现在可以点击OK按钮关闭System Properties窗口,然后您可以关闭My Computer窗户。

环境变量通常仅在程序启动时读取。因此,在您更改环境变量的值、添加新环境变量或删除环境变量后启动的任何程序通常都会看到包含新(更改)值的环境。

对于已经运行的程序,您可能必须关闭并重新启动它们,或者重新启动计算机才能看到新的(更改的)值。

答案2

该软件可能没有在寻找 WinWord.exe,它可能正在尝试使用以下方式与其通信OLE自动化/串口,并且当它无法启动OLE时,它会报告找不到它。

来自MSDN的更多信息:自动化

LibreOffice 的 Writer充当 COM 服务器来提供类似的自动化,但试图自动化 Word/Writer 的软件需要重新编程才能使用它,包括其不同的命名空间、ClassId、方法等。

如果你怀疑它试图运行 WinWord.exe,那么也许可以启动一个进程监控通过一些测试来确认或否认它。

答案3

可能不行。您不能直接重命名文件来适应,因为通常会调用程序并将参数传递给它/它的函数。

询问专有应用程序的开发人员是否考虑超越 Word 进行扩展 - 请记住,这对他们来说是无偿的工作,因此这将是客户的愿望,他们可能会在将来的某个时候实现它,但肯定不是现在。

为什么不直接手动打开文档来用 Libre 进行编辑呢?

相关内容