13

ClickOnce アプリケーションがあり、それに URL パラメーターを渡す機能が必要です。たとえば、ユーザーが「http://foo.bar/MyApp.application?flavor=grape」という形式の URL をクリックすると、アプリケーションが起動し、「?flavor=grape」クエリが渡されます。

残念ながら、これはすぐに使用できる IE でのみ機能するようです。Firefox と Chrome では、ClickOnce 配置を機能させるには、ユーザーがアドオンをインストールする必要があります。私のユーザーは制限のある企業環境で働いており、アドオンやその他のことをインストールすることは許可されていません (ただし、ClickOnce は機能します)。それで、私は何をしますか?

私が考えることができるハックの 1 つは、「.bugmaster」などの十分に一意のファイル拡張子のファイル ハンドラーとしてアプリケーションを登録することです。次に、または私の理論はそうでした-Webサーバーに「flavor_grape.bugmaster」という名前のファイルを生成させることができました。ユーザーがそのファイルを指す URL をクリックし、[保存] ではなく [実行] を選択すると、アプリケーションが起動し、URL パラメータのファイル名が解析されます。残念ながら、このアプローチも機能しません。「flavor_grape.bugmaster」ファイルがローカル ファイル システムから開かれている場合は問題なく動作しますが、何らかの理由で、ユーザーがブラウザからファイルを開こうとすると動作しません。

他のアイデアはありますか?

4

2 に答える 2

12

Setup.exe によって使用される URL にパラメーターを直接エンコードできるという点で、ClickOnce には気の利いた小さなトリックがあります。たとえば、'flavor=grape' パラメーターを含む setup.exe を作成するには、コマンド ラインから次のコマンドを実行します。

copy setup.exe setup-for-grape.exe
setup.exe -url="http://foo.bar/MyApp.application?flavor=grape" /dest=setup-for-grape.exe

これは、元の setup.exe を変更する代わりに、文書化されていない /dest フラグを使用して結果を setup-for-grape.exe ファイルに出力します。これを行った後、setup-for-grape.exe は URLを指し、flavor=grape パラメーターを含みます。署名を使用している場合は、setup.exeの署名されていないコピーに対してこれを行い、後で署名する必要があることに注意してください。署名が壊れるためです。

可能なパラメーターの選択肢の数がかなり限られている場合は、それらすべてに対して setup.exe を生成し、Web サイトからそれらにリンクすることができます。

一方、選択肢が無数にある場合は、いくつかのパラメーターを取り込み、必要なパラメーターがエンコードされた setup.exe を生成し、それをクライアントに吐き出す Web サービスをセットアップできます。この方法を使用して、特定のサーバーに接続されたクライアント用の setup.exe を生成しました。クライアント インストール URL にはサーバー接続情報がエンコードされているため、クライアントがインストールされると、接続先のサーバーが自動的に認識されます。

もちろん、setup.exe を使用したくない場合、または制限のある企業環境で使用できない場合は、これらすべてが窓の外に出てしまいます。しかし、うまくいけば、それが役に立つか、少なくとも有益であることがわかるでしょう.

于 2012-06-12T23:34:58.627 に答える