LibreOffice Java 包设置 vendorData
Posted
技术标签:
【中文标题】LibreOffice Java 包设置 vendorData【英文标题】:LibreOffice Java package settings vendorData 【发布时间】:2016-08-16 11:52:34 【问题描述】:所以我今天有一个任务,自动化在 LibreOffice 中选择 Java 包的过程(当你在 GPO 中安装新的 Java 版本时,你必须在 LibreOffice 中通过 Tools->Settings-> 手动选择新版本的 Java LibreOffice->高级)。这个想法非常简单,我需要更改的所有内容就是这个带有 PowerShell 脚本的简单 xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<!--This is a generated file. Do not alter this file!-->
<java xmlns="http://openoffice.org/2004/java/framework/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<enabled xsi:nil="true"/>
<userClassPath xsi:nil="false">//server/public/base/mysql-connector-java-5.1.25/mysql-connector-java-5.1.25-bin.jar</userClassPath>
<vmParameters xsi:nil="true"/>
<jreLocations xsi:nil="true"/>
<javaInfo xsi:nil="false" vendorUpdate="2013-05-02" autoSelect="false">
<vendor>Oracle Corporation</vendor>
<location>file:///C:/Program%20Files%20(x86)/Java/jre1.8.0_91</location>
<version>1.8.0_91</version>
<features>0</features>
<requirements>0</requirements>
<vendorData>660069006C0065003A002F00[...]76006D002E0064006C006C00</vendorData> //250+ hex characters
</javaInfo>
</java>
一切都很顺利,直到我注意到这个 vendorData 元素。它对每个包都是独一无二的,包含 250 多个十六进制字符。当我尝试在其中手动更改某些内容时,LibreOffice 中 Java 包的选择会自动取消选中,如果我再次手动选择包,十六进制字符串将自动生成。我认为这个字符串包含校验和。
有谁知道,这个字符串是如何生成的?是否有任何 LibreOffice 文档,可以在其中找到类似的内容?
xml文件一般位于%appdata%\Roaming\LibreOffice\4\user\config\javasettings_Windows_x86.xml
十六进制字符串的长度各不相同,但其中的某些部分似乎是恒定的。
【问题讨论】:
【参考方案1】:嗯,答案很简单。这个“奇怪”的十六进制字符串只是从内容到文件位置的路径 + 最后它在同一代码中添加字符串“/bin/client/jvm.dll”,其中十六进制代码中的 FF 只是 ASCII 字符的数量,然后00 表示下一个字母。
例如:
6100620063
所以我们得到了 3 个字符,十进制的 61 是 97,而在 ASCII 中是“a”。
整个“6100620063”表示“abc”。
有了这些知识,我们只需要简单的函数来将“/bin/client/jvm.dll”内容转写成十六进制代码。
【讨论】:
你解开了这个谜,但我认为它是 UTF-16LE 的十六进制表示,即 Windows 宽字符串路径。 0x0061 将变为 6100。可能是为了文件路径中的 Unicode 支持。以上是关于LibreOffice Java 包设置 vendorData的主要内容,如果未能解决你的问题,请参考以下文章
LibreOffice UNO:设置样式(可以使用 Java、VB、Python、C++、任何使用 UNO API 的语言提供)
libreoffice的中文语言界面包我怎么安装不上...没有可用软件包 libreoffice-langpack-zh_Hans怎么回事..