Install4j 未加载用户覆盖的java首选项(Windows factory)XmlPreferencesFactory

Install4j 未加载用户覆盖的java首选项(Windows factory)XmlPreferencesFactory,install4j,Install4j,我们正在将命令行选项中的首选工厂设置为 -Djava.util.prefs.PreferencesFactory=…preferences.XMLPreferencesFactory(我们正在使用自己的首选项工厂实现) 这不起作用,但在install4j中使用了windows首选项工厂来代替它。 eclipse和其他安装工具也是如此 片段 类userNodeFromClassPackage userNodeForPackage(usernodeforomclasspackage) 但此首选项不会

我们正在将命令行选项中的首选工厂设置为

-Djava.util.prefs.PreferencesFactory=…preferences.XMLPreferencesFactory(我们正在使用自己的首选项工厂实现)

这不起作用,但在install4j中使用了windows首选项工厂来代替它。 eclipse和其他安装工具也是如此

片段

类userNodeFromClassPackage

userNodeForPackage(usernodeforomclasspackage)


但此首选项不会创建xmlPreferencesFactory。似乎install4j中已经调用了首选项,因此它返回windows首选项。请帮助设置-Djava.util.prefs.PreferencesFactory变量,以便使用我们自己的PreferencesFactory(XMLPreferencesFactory)代替Windows首选项。

在Windows Installer中,WinLauncher类的main方法在内部调用InstallerUtil的disablePreferencesLogging,它首先使用首选项,-J-Dinstall4j.noLoggingFix=true不禁用此选项,因为java中的首选项具有静态方法factory(),该方法在类加载和实例化时设置其值(WindowsPreferences、FilePreferences或Service bundle等)

在您的dev(eclipse)设置中,当从您的代码中调用此选项时,将加载此选项,并且您的业务逻辑可能依赖于此


希望这有帮助

这是给安装程序还是给启动器的?如果您将其作为VM参数传递,它应该在这两种情况下都能工作,install4j没有设置自己的首选项工厂。这个问题与launcher有关。我们尝试将上述内容作为VM参数传递。它确实设置了变量,当应用程序中出现与首选项相关的更改时,它会保存在preferences.xml中,但当我退出应用程序并重新启动它时,会创建默认preference.xml并替换旧的preference.xml。因此,用户保存的首选项丢失。请尝试从命令行使用-J-Dinstall4j.noLoggingFix=true启动应用程序。然后根本不访问首选项子系统。如果这有帮助,请在启动程序向导中的VM参数中添加-Dinstall4j.noLoggingFix=true。首选项未按建议工作,似乎选择了Windows首选项而不是xmlPreferences。首选项未按建议工作,似乎选择了Windows首选项而不是xmlPreferences。我们还注意到install4j中的PreferencesUtil类也调用了首选项,我们怀疑这是造成问题的原因,但在javasoft下,我们没有注意到任何节点,但节点是在HKEY_CURRENT_USER\Software\ej technologies\install4j\Installation中创建的,HKEY_CURRENT_USER\Software\ej technologies\exe4j\jvms\c:/program files(x86)/sitemanager/jre/bin/java.exe,如果我们删除它并再次运行我们的应用程序,它将再次创建这些节点,是的,这正在工作!谢谢我们无法找到WinLauncher和InstallerUtil。