用户覆盖java首选项(Windows工厂)XmlPreferencesFactory未加载

时间:2015-10-28 12:17:12

标签: install4j

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

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

这不起作用,但取代这个窗口 - 首选工厂正在使用install4j。 同样适用于eclipse和其他安装工具。

片段

类userNodeFromClassPackage;

Preferences.userNodeForPackage(userNodeFromClassPackage);

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

1 个答案:

答案 0 :(得分:0)

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

在你的dev(eclipse)设置中,当你的代码调用了这个,并且你的业务逻辑可能依赖于这个时,这个工作原理就会被加载。

希望这有帮助