访问有关clickonce应用程序的文件夹信息

Fra*_*erZ 10 c# clickonce

这是问题所在:

我有两个申请.其中一个是我无法访问的clickonce应用程序,另一个是我正在设计的ac#program.我需要一种方法来通过.appref-ms开始菜单中的文件或从该文件中找到的令牌ID /名称来跟踪安装应用程序的应用程序文件夹.

这可能吗?有没有办法查询clickonce商店的应用程序列表及其安装位置?我找到的所有内容都是指打开进程列表并转到进程映像位置,但如果程序未运行,则无法执行此操作.

Sid*_*r94 2

我不知道如何查询 ClickOnce 存储。

\n\n

但正如 @Vojt\xc4\x9bch Dohnal 所说。所有 ClickOnce 应用程序将存储在C:\\Users\\xxxx\\AppData\\Local\\Apps\\2.0

\n\n

我们可以想象一个解决方案,该解决方案将为每个用户列出树中的所有可执行文件,并且仅保存最后的版本。

\n\n

这是一个示例代码片段(单用户):

\n\n
var exes = Directory.EnumerateFiles(@"C:\\Users\\<user>\\AppData\\Local\\Apps\\2.0", "*.exe",\n    SearchOption.AllDirectories);\n\nvar apps = new Dictionary<String, Tuple<String, Version>>();\n\nforeach (var file in exes)\n{\n    var fileName = Path.GetFileName(file);\n\n    Version v = null;\n    Version.TryParse(FileVersionInfo.GetVersionInfo(file).FileVersion, out v);\n\n    if (fileName == null || v == null) continue;\n\n    if (!apps.ContainsKey(fileName))\n    {\n        apps.Add(fileName, new Tuple<string, Version>(file, v));    \n    }\n    else if (v > apps[fileName].Item2)\n    {\n        apps[fileName] = new Tuple<string, Version>(file, v);\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

您将在应用程序字典中找到所有应用程序名称作为键,以及作为值的元组,其中包含可执行文件的完整路径及其版本。

\n\n

没有找到其他方式来获取信息,但我希望它能完成这项工作

\n\n

在我的电脑上尝试了一下,似乎运行良好

\n\n

如果您知道应用程序名称,则可以通过这种方式获取最后安装版本的路径。

\n\n

如果没有,但您知道它在哪里.appref-ms,则必须打开它,获取应用程序清单(.applicationClickOnce 发布的文件)并从节点获取可执行文件名称assemblyIdentity

\n