我不知道如何查询 ClickOnce 商店。
但正如@Vojtěch Dohnal 所说。所有 ClickOnce 应用程序都将存储在C:\Users\xxxx\AppData\Local\Apps\2.0
我们可以想象一个解决方案,它会为每个用户列出树中的所有可执行文件,并且只保存最后的版本。
这里是一个示例代码sn-p(单用户):
var exes = Directory.EnumerateFiles(@"C:\Users\<user>\AppData\Local\Apps\2.0", "*.exe",
SearchOption.AllDirectories);
var apps = new Dictionary<String, Tuple<String, Version>>();
foreach (var file in exes)
{
var fileName = Path.GetFileName(file);
Version v = null;
Version.TryParse(FileVersionInfo.GetVersionInfo(file).FileVersion, out v);
if (fileName == null || v == null) continue;
if (!apps.ContainsKey(fileName))
{
apps.Add(fileName, new Tuple<string, Version>(file, v));
}
else if (v > apps[fileName].Item2)
{
apps[fileName] = new Tuple<string, Version>(file, v);
}
}
您会在应用程序字典中找到所有应用程序名称作为键,以及作为值的元组,其中包含可执行文件的完整路径及其版本。
没有找到其他获取信息的方法,但我希望它能完成这项工作
在我的电脑上试了一下,好像没问题
如果您知道您的应用程序名称,您可以通过这种方式获取最后安装版本的路径。
如果不知道但您知道.appref-ms 在哪里,则必须打开它,获取应用程序清单(ClickOnce 发布的.application 文件)并从assemblyIdentity 节点获取可执行文件名称。