我们将命令行选项中的首选项工厂设置为
-Djava.util.prefs.PreferencesFactory = ... preferences.XMLPreferencesFactory(我们使用自己的首选工厂实现)
这不起作用,但取代这个窗口 - 首选工厂正在使用install4j。 同样适用于eclipse和其他安装工具。
片段
类userNodeFromClassPackage;
Preferences.userNodeForPackage(userNodeFromClassPackage);
但是这个首选项不会创建xmlPreferencesFactory。似乎已经在install4j中调用了Preferences,因此它返回了Windows首选项。请帮助如何设置-Djava.util.prefs.PreferencesFactory变量,以便我们自己的PreferencesFactory(XMLPreferencesFactory)代替Windows首选项。
答案 0 :(得分:0)
在Windows Installer中,WinLauncher类的main方法在内部调用InstallerUtil的disablePreferencesLogging,它首先使用Preferences,-J-Dinstall4j.noLoggingFix = true不会禁用此,因为java中的Preferences有静态方法factory(),它在类加载时设置其值并实例化它(WindowsPreferences,FilePreferences或Service bundle等),
在你的dev(eclipse)设置中,当你的代码调用了这个,并且你的业务逻辑可能依赖于这个时,这个工作原理就会被加载。
希望这有帮助