【发布时间】:2023-03-29 18:40:02
【问题描述】:
我们在命令行选项中将我们的首选项工厂设置为
-Djava.util.prefs.PreferencesFactory=...preferences.XMLPreferencesFactory(我们使用自己的偏好工厂实现)
这不起作用,但代替此 windows-preference factory 正在 install4j 中使用。 同样适用于 eclipse 和其他安装工具。
片段
类 userNodeFromClassPackage;
Preferences.userNodeForPackage(userNodeFromClassPackage);
但是这个 Preferences 不会创建 xmlPreferencesFactory。似乎已经在 install4j 中调用了 Preferences,因此它返回了 windows Preferences。请帮助如何设置 -Djava.util.prefs.PreferencesFactory 变量,以便使用我们自己的 PreferencesFactory(XMLPreferencesFactory) 代替 Windows Preferences。
【问题讨论】:
-
这是用于安装程序还是用于启动器?如果将此作为 VM 参数传递,它应该在两种情况下都可以工作,install4j 不会设置自己的首选项工厂。
-
这个问题出在启动器上。我们尝试将上述内容作为 VM 参数传递。它确实设置了变量,当我们在应用程序中发生与首选项相关的更改时,它会保存在preferences.xml中,但是当我退出应用程序然后重新启动它时,会创建默认的preference.xml并替换旧的preferences.xml .所以用户保存的偏好会丢失。
-
尝试从命令行使用 -J-Dinstall4j.noLoggingFix=true 启动应用程序。然后根本不访问首选项子系统。如果这有帮助,请将 -Dinstall4j.noLoggingFix=true 添加到启动器向导中的 VM 参数中。
-
首选项未按建议工作,似乎已选择 Windows 首选项而不是 xmlPreferences。
-
Preferences 没有按建议工作,看起来 Windows 首选项代替了 xmlPreferences。我们还注意到 install4j 中的 PreferencesUtil 类也调用了preferences,我们怀疑这是造成问题,但在javasoft 我们没有注意到任何节点,但是在 HKEY_CURRENT_USER\Software\ej-technologies\install4j\installations、HKEY_CURRENT_USER\Software\ej-technologies\exe4j\jvms\c:/program files (x86)/sitemanager/jre 中创建了节点/bin/java.exe, ,如果我们删除它并再次运行我们的应用程序,它会再次创建这些节点,
标签: install4j