LibreOffice Java 软件包设置 vendorData

LibreOffice Java package settings vendorData

所以我今天有一个任务,要在 LibreOffice 中自动执行 selecting Java 包的过程(当你在 GPO 中安装新的 Java 版本时,你必须select 新版本 Java 在 LibreOffice 中通过工具->设置->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 包的 selection 自动取消选中,如果我再次手动 select 打包,十六进制字符串将自动生成本身。我认为这个字符串包含校验和。

有谁知道,这个字符串是怎么生成的?是否有任何 LibreOffice 文档可以找到像这样的文档?

Xml 文件通常位于 %appdata%\Roaming\LibreOffice\user\config\javasettings_Windows_x86.xml

十六进制字符串的长度各不相同,但其中的某些部分似乎是恒定的。

嗯,答案很简单。这个 "strange" 十六进制字符串只是从内容到文件位置的路径 + 最后它在同一代码中添加字符串“/bin/client/jvm.dll”,其中十六进制代码中的 FF 只是 ASCII 字符的数量,那么 00 表示下一个字母。

例如:

6100620063

所以我们得到了 3 个字符,61 在十进制中是 97,在 ASCII 中是 "a"。

整个“6100620063”表示"abc"。

有了这些知识,我们只需要简单的函数来将“/bin/client/jvm.dll”内容转换为十六进制代码。