目前我正在搞乱Click-Once WPF应用程序。该应用程序是一些非我开发的第三方应用程序。我也无法访问其来源。
通过执行安装应用程序时在开始菜单路径中放置的相应*.appref-ms
链接,定期并自动(使用标准C ++编写的自制启动器)在Windows服务器上运行。这很好。
由于该应用程序周期性出现问题,我的启动程序需要在启动之前擦除所有配置文件,因此我始终可以获得定义良好的运行。这些文件放在应用程序的一个文件夹中。其设置的配置路径如下(我通过手动搜索AppData树找到它):
C:\Users\<UserName>\AppData\Local\Apps\2.0\Data\WM4WPKCW.P5Z\67QVXD6C.0NT\<app>_f6187a2321850a68_0003.0004_1a67f9f1633c43fc\Data\AppFiles\
请注意,此配置路径与应用程序路径(使用不同命名的文件夹)完全不同:
C:\Users\<User>\AppData\Local\Apps\2.0\5HN2CKMO.MPL\YOL20MYR.O8L\<app>_f6187a2321850a68_0003.0004_f6ab8c93b3a43b7c\
由于此配置路径在Click-Once应用程序的每次更新时都会更改,因此我需要自动通过代码(最好是C ++)找到它。不幸的是,我无法想办法做到这一点。
如何让我的启动器根据其*.appref-ms
文件找到Click-Once应用程序的配置路径?
答案 0 :(得分:1)
来自Raghavendra Prabhu’s blog entry “Client Settings FAQ”:
“如果要以编程方式访问路径,可以使用Configuration Management API执行此操作(需要添加对System.Configuration.dll的引用)。例如,以下是如何获取本地user.config文件路径:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal); Console.WriteLine("Local user config path: {0}", config.FilePath);
代码是C#(显然),但不应该很难转换为C ++ / CLI。
Raghavendra Prabhu进一步写道:
“如果由于某种原因需要将设置存储在其他位置,建议的方法是编写自己的
SettingsProvider
。这实现起来相当简单,您可以在.NET 2.0 SDK中找到演示如何执行此操作的示例。但请记住,您可能遇到上述相同的隔离问题。
免责声明:我没有对此进行测试。