4

カスタムURLプロトコル (例: myprotocol://SomeFolder/SomePage) をClickOnceアプリケーションに関連付けたいと考えています。

問題なく関連付けを作成できます。問題は、アプリケーションが更新されるたびに (頻繁に) EXE ファイルへのパスが変更されることです。

この問題を回避する方法はありますか?

4

4 に答える 4

4

これに対する答えはあなたにはできないようですが、私は解決策を思いつきました。

ショートカットを見つけてその起動パラメーターを ClickOnce アプリケーションに渡すランチャー (非常に単純なアプリケーション) を作成しました。従来の方法でランチャーをインストールする必要がありますが、メイン アプリケーションは必要に応じて ClickOnce で更新できます。

これらのリンクが役立つことがわかりました。

于 2011-10-12T14:50:52.640 に答える
0

ClickOnce を実行しようとしている場合は、必要な URL プロトコルの値がなくても、適切なキーが HKCR に既に追加されています。このコードをアプリケーション ロジックの先頭に追加しました。

try
{
    RegistryKey rk = Registry.ClassesRoot.OpenSubKey("MyProgramName", true);
    rk.SetValue("URL Protocol", "");
}
catch (Exception ex)
{ 
    // handle, log, etc.
}

これは、URL プロトコルで参照する必要があったため、うまく機能しました (例: " MyProgramName://...."。アプリケーションに管理者権限がなくても、これを正常に実行できました。別のハンドラーを登録しようとしている場合は、必要になるかもしれませんが、少なくとも、そこにある値を見ると、アプリケーションを適切に起動する方法がわかります。

デフォルトで作成されるレジストリ キーは次のとおりです。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\MyAppName]
@="Electronic Data Interchange (EDI) File"
"AppId"="MyAppName.application, Culture=neutral, PublicKeyToken=31fc6d113f9bb401, processorArchitecture=msil"
"DeploymentProviderUrl"="file://server/share/MyAppName/MyAppName.application"
"Guid"="{MY_APP_GUID}"

[HKEY_CLASSES_ROOT\MyAppName\shell]
@="open"

[HKEY_CLASSES_ROOT\MyAppName\shell\open]

[HKEY_CLASSES_ROOT\MyAppName\shell\open\command]
@="rundll32.exe dfshim.dll, ShOpenVerbExtension {MY_APP_GUID} %1"

[HKEY_CLASSES_ROOT\MyAppName\shellex]

[HKEY_CLASSES_ROOT\MyAppName\shellex\IconHandler]
@="{MY_APP_GUID}"

そして、私が投稿したコードは、ノードURL Protocolの下に空の値を持つa を追加するだけです。MyAppName

于 2016-09-09T20:33:03.587 に答える
0

アプリケーションがシステムにインストールされたら、スタート メニューにリンクを作成します。リンクは、実際には「appref-ms」拡張子を持つファイルです。したがって、トリックは、「appref-ms」を使用してアプリを開くプロトコルを登録することです。

そのため、ClickOnce アプリケーションの起動時に、次のレジストリ エントリを作成してプロトコルを登録できます。HKEY_CLASSES_ROOT myprotocol = {プロトコルの説明} シェルを開くコマンド = エクスプローラー %1

それでおしまい。誰かが myprotocol: XXX のような URL をクリックすると、アプリが開かれ、「ClickOnce」アプリケーションとして開かれるため、新しいバージョンがあるかどうかなどがチェックされます。

于 2016-09-05T12:43:44.187 に答える