1

我想获取 ClickOnce 应用程序的路径和版本号,提供ClickOnce应用程序的名称

当我手动搜索它时,我在路径中找到它,如下所示:

'C:\Users\krishnaim\AppData\Local\Apps\2.0\1HCG3KL0.K41\VO5BM4JR.RPO\head..tion_7446cb71d1187222_0005.0037_37dfcf0728461a82\HeadCount.exe'

但这一直在变化,它将成为一条硬编码的路径。是否有其他方法可以使用 C#/.NET 代码获取 ClickOnce 应用程序(例如,已安装的 HeadCount.exe)路径和版本号?

4

2 回答 2

4

这似乎有点奇怪,但是获取正在执行的程序集的当前目录有点棘手,所以我下面的代码可能比你想象的要多,但我向你保证,它正在缓解其他人可能尝试使用Assembly 的一些问题。 GetExecutingAssembly .Location属性。

static public string AssemblyDirectory
{
    get
    {
        //Don't use Assembly.GetExecutingAssembly().Location, instead use the CodeBase property
        string codeBase = Assembly.GetExecutingAssembly().CodeBase;
        UriBuilder uri = new UriBuilder(codeBase);
        string path = Uri.UnescapeDataString(uri.Path);
        return System.IO.Path.GetDirectoryName(path);
    }
}

static public string AssemblyVersion
{
    get
    {
        var asm = Assembly.GetExecutingAssembly();
        //If you want the full four-part version number:
        return asm.GetName().Version.ToString(4);

        //You can reference asm.GetName().Version to get Major, Minor, MajorRevision, MinorRevision
        //components individually and do with them as you please.
    }
}
于 2012-06-27T16:13:46.403 回答
0

为了执行 ClickOnce 应用程序更新,您不必手动执行此操作,只要您使用标准部署清单(除非您使用它们,否则我不知道如何使用 ClickOnce)。

MSDN 文章选择 ClickOnce 更新策略描述了应用程序更新的不同选项。

于 2012-06-27T19:05:37.023 回答