佳软共用 – linux 下打造 office 办公环境

办公软件一直以来就是桌面系统不可或缺的支撑力量。近年来,linux 桌面发展迅速,也为用户提供了多种桌面办公解决方案,如 libreoffice、wps。这些软件虽然功能强大,但比起微软的 office series,用户规模还是不可同日而语。在日常工作学习中,在 linux 环境下,也不可避免要处理大量的 office 文件。libreoffice 和 wps 虽然也为处理 office 格式文件做出了妥协,但无论是从文件的兼容性、显示的一致性和易用性上都与原生 office 软件有相当的差距。如能在 linux 环境下,也使用 microsoft office 软件,无疑为 linux 与 Windows 的桌面协同办公打开了通道。


(协同办公已是当前不可阻挡的趋势,无论是 PC 端、还是移动端;Windows 平台,还是 Linux 平台,亦或是 Mac 平台,数据是协同的真正核心,数据不拘泥于具体平台,平台作为协同操作方式的载体,对数据的显示形式可能有所不同,但对数据内容的理解与完善一定没有区别)

一、Windows 软件的 linux 解决方案

为了能在软件没有 linux 版本解决方案的环境下,也使用 Windows 上的软件,目前常用两种方法:

  • 虚拟机 解决方案
  • wine 系列产品 解决方案

虚拟机是一种跨平台通用的解决方案,搭建好的虚拟机既可在 linux 下使用,也可在 Windows 下使用;既可在 linux 使用 Windows 虚拟机,也可在 Windows 下使用 linux 虚拟机。虚拟机要完整虚拟一台计算机,并在该计算机上安装完整的操作系统,在操作系统上安装相匹配的软件,从这一过程不难看出,虚拟机的软件解决方案体量较大,占用资源多,是一种重量级的解决方案。

而 wine 则是一种非常有意思的解决方案,其本质是在操作系统 API 层的模拟和实现。软件在某种操作系统平台中运行,除了自身内部逻辑外,调用特定操作系统的 API (与操作系统 API 交互,如 win32、POSIX),从而利用系统资源(CPU、memory、磁盘、网络等),完成特定任务功能。为了完成在 linux (类 Unix 操作系统) 上运行 windows 软件的任务,需要完成 windows 软件所需的 win API 到 linux 上 API (POSIX 接口)的转化,wine 承担了这一的任务,将 windows 程序的指令“翻译”为 linux 所能理解的指令,充当了 Windows 平台下软件与类 Unix 操作系统的“中间件”的角色。

二、wine 家族

wine 的出现,为在 POSIX 接口平台上运行 win API 程序提供了轻量级的解决方案。随着 wine 的不断改进完善,衍生出以 wine 为中心的一系列产品:

  • wine

    wine 的核心程序

  • winetricks

    方便用户使用 wine 的一种辅助脚本,协助进行 wine 各种相关配置、下载并安装各种 wine 中运行程序所需要的各种组件、相关 runtime 库等任务。

    如果说单纯使用 wine 本身主要是命令行操作,winetricks 则为 wine 操作提供了一种 GUI 界面。

  • playonlinux

    一种图形化、脚本集成化的 wine,针对特定软件,无需用户定制,利用编写好的脚本,一站式安装。

  • crossover

    wine 的商业版本,由CodeWeavers 公司出品

三、wine 运行架构简述

wine 本质上是采用轻量级的方式在 linux 上模拟一台 windows 的计算机。

在架构上,类似客户机/服务器模式,即每一个被模拟的 windows 计算机都对应唯一一个 wine 客户机和 wine 服务器组合,不同的 wine 客户机,有不同的 wine 服务器与之对应。需要运行的原生 windows 软件安装在 wine 具体客户机上。

wine 客户机使用 WINEPREFIX 变量来标定,WINEPREFIX 取值为操作系统中的一个具体的路径,每一个不同的 WINEPREFIX 的取值,代表一个不同的 windows 计算机。针对模拟出的每个不同的 windows 计算机,可以进行不同的环境配置(如操作系统版本、架构等),以适应期望运行其中的 windows 软件的需求。

wine 服务器使用 wineserver 进程来标定,每个不同的 wine 客户机,即每个不同的 WINEPREFIX,对应不同的 wineserver 进程。

pic-1

wine 的客户机/服务器架构为 windows 软件的安装和应用提供了极大的灵活性。可以将不同的软件安装在同一台 wine 计算机上,此时,只有一个 wineserver 服务器进程;也可以将不同的软件安装在不同的 wine 计算机上,甚至也可以将同一个软件的不同备份安装到不同的计算机上。

pic-2

四、常见 wine 运行参数

wine 的目的是在 linux 下运行 windows 程序,wine 的参数设置也都是围绕这一目的而来。

  • WINEARCH

    该参数确定模拟的 windows 系统的体系结构。

    Windows 系统有32位和64位之分,该参数为指明这一区分设计。WINEARCH=win32,表明是32位结构;WINEARCH=win64,表明是64位结构。

    当没有明确设置这一参数时,默认为在64位 Windows 系统安装程序。

    该参数一旦设定好,对于每台模拟的 windows 计算机都是固定不变的,后续应用程序运行时无需再次指出。

  • WINEPREFIX

    利用 wine 安装 Windows 程序需要指明系统驱动器(drive_C),该参数为这一目的设计。每次安装 windows 程序,可以指定不同的 drive_C 进行安装,不同 drive_C 的路径即通过这一参数设置。

    当不设置这一参数时,默认 WINEPREFIX 路径为 ~/.wine/

    利用该参数,可以完成一些有趣的任务。
    如,可以运行两个程序(如 server 和 client 或者同一个程序),使其看起来像在不同计算机上运行一样。其解决方法就是利用不同的 WINEPREFIX,从而本质上模拟两台不同的 windows 计算机。首先,利用默认路径运行第一个程序,

    wine first-program.exe

    然后,通过指定 WINEPREFIX 参数,运行第二个程序:

    WINEPREFIX=”$HOME/.wine-seconde” wine second-program.exe

  • 运行.msi文件

    msi 文件不能直接运行,需使用 msiexec 或 start 方法:

    wine msiexec /i whatever.msi
    wine start whatever.msi

五、wine 下安转 office 2013

  1. 安装 wine 和相关组件
    • 安装最新版本 wine (2.0以上)
    • 安装 winebind (binfmt-support、winbind)
    • 安装 winetricks
  2. 操作系统及安装目录设定
    • 指定 driver_C 安装目录、操作系统位数

      WINEPREFIX=~/.wine/Office2013 WINEARCH=win32 winecfg

    • 设定操作系统版本
      在 winecfg 对话框 application 的 tab 页中,选择 Windows version: Windows 7

  3. 利用 winetricks 安装相关库文件

    • 特定目录打开 winetricks

      WINEPREFIX=~/.wine/Office2013 WINEARCH=win32 winetricks

    • 安装 msxml6 库文件
      在 winetricks 对话框中,选择 
      select the default wineprefix –> Install Windows DLL components –> msxml6

  4. 防止 office 启动黑屏问题
    在 winetricks 对话框中,选择 Run regedit,在
    HKEY_CURRENT_USER - Software - Wine
    下新建 Direct3D 键,在该键下新建 DWORD 值,命名为 MaxVersionGL,将其值设置为 30002 (hexadecimal)。
  5. 安装 Office 2013
    在先前设置的 drive_C 和操作系统版本中安装 Office 2013
    >WINEPREFIX=~/.wine/Office2013 WINEARCH=win32 wine ~/Path_To_Office2013_setupfile.x86.exe

注:英文版可完美安装。

reference:

  1. Wine User’s Guide
  2. Wine F&Q
  3. https://wiki.winehq.org/Winetricks
  4. https://appdb.winehq.org/objectManager.php?sClass=version&iId=26323
  5. https://askubuntu.com/questions/879304/wine-2-0-says-it-supports-office-2013-how-do-i-actually-install-it
    (office activation)
  6. https://www.novaspirit.com/2015/04/12/activate-office-2010-under-wine-with-kms-emulator/
  7. https://www.codeweavers.com/compatibility/crossover/tips/microsoft-office-2010/activate-using-a-volume-license-kms-server
  8. https://askubuntu.com/questions/277709/activate-office-2010-running-in-playonlinux-with-a-kms-server
  9. https://www.lulinux.com/archives/1319
  10. https://saintaardvarkthecarpeted.com/blog/2014/03/07/activating_ms_office_2010_against_a_kms_server_in_crossover_linux/
    (kms server)
  11. http://www.xitongcheng.com/jiaocheng/dnrj_article_44606.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注