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

少し奇妙に思えますが、実行中のアセンブリの現在のディレクトリを取得するのは少し難しいので、以下のコードはあなたが思っているよりも多くのことをしているかもしれませんが、他の人がアセンブリを使用しようとする可能性があるいくつかの問題を軽減していることを保証します. 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 に答える