これは、WebページにWin32 EXEであるいくつかのユーティリティへのリンクを含める内部Webアプリケーションです。 EXEは私たちによって信頼され、作成されています。 (実行するか保存するかどうかを尋ねるかどうかは気にしません)。ローカルでのみ動作するダイレクトリンク(C:\ notepad.exeなど)を試しました。 (これはネットワーク上の共有になります)。 File:///を試しましたが、動作しませんでした。 IE7は必要なブラウザです。
次のようなものはどうですか:
<a href="\\DangerServer\Downloads\MyVirusArchive.exe"
type="application/octet-stream">Don't download this file!</a>
これは、exeがユーザーのコンピューター上のどこかにあることを前提としています。
<a href="javascript:LaunchApp()">Launch the executable</a>
<script>
function LaunchApp() {
if (!document.all) {
alert ("Available only with Internet Explorer.");
return;
}
var ws = new ActiveXObject("WScript.Shell");
ws.Exec("C:\\Windows\\notepad.exe");
}
</script>
ドキュメント: ActiveXObject 、 Execメソッド(Windowsスクリプトホスト) 。
リンクの使用時にアクションをフォローするためにFiddlerを使用することで、iTunesがどのようにそれを行うかを見ることができます: http://phobos.Apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=80028216
Exeをインストールすると、ブラウザで「itms」トランスポート用のURLプロトコルハンドラーがインストールされます。
複製する単純なエンジニアリングプロジェクトではありませんが、間違いなく実行可能です。これを続行する場合は、関連するソフトウェアをオープンソースにすることを検討してください。
Windowsでは、アプリケーションに指定されたプロトコルをレジストリに登録できます。この中の msdn doc は、URIスキームへのアプリケーションの登録を示しています。
たとえば、実行可能ファイル「alert.exe」が開始されます。以下の項目を登録できます。
HKEY_CLASSES_ROOT
alert
(Default) = "URL:Alert Protocol"
URL Protocol = ""
DefaultIcon
(Default) = "alert.exe,1"
Shell
open
command
(Default) = "C:\Program Files\Alert\alert.exe"
次に、テストするhtmlを書くことができます
<head>
<title>alter</title>
</head>
<body>
<a href="alert:" >alert</a>
<body>
Larry Kが示唆した solution の一部として、独自のプロトコルを登録することが解決策になる可能性があります。 Webページには、アプリケーションをダウンロードしてインストールするための簡単なリンクを含めることができます。これにより、独自のプロトコルがWindowsレジストリに登録されます。
Webページには、登録されたプログラムが開かれたり、リンクで指定されたパラメーターが渡されたりするパラメーターを持つリンクが含まれます。 [〜#〜] msdn [〜#〜] でこれを行う方法の良い説明があります。
アプリケーションがC#の場合、 ClickOnce deployment を使用できます。これは、ユーザーがアプリを使用することを保証できない場合に適したオプションですが、展開を使用してアプリを再構築する必要がありますオプションと各プロジェクトからいくつかの定型コードを取得します。
Javascript を使用することもできます。
または、アプリケーションを 新しいWebプロトコルを処理する に登録できます。これは「アプリ選択」プロトコルでもある可能性があるため、アプリがクリックされるたびに新しいプロトコルのページにリンクし、このプロトコルのすべての処理は引数を使用して検索および起動する「選択アプリ」に渡されますクライアントPC上のアプリ。
HTH
拡張子が.exeのファイルへのリンクをWebページに挿入するのに問題があると言っていますか?
その場合は、1ステップ戻ります。ファイルの拡張子が.htmまたは.cssであると想像してください。どうすればダウンロード可能にできますか?静的リンクの場合、答えは明らかです。ファイルは、ASP.NETアプリのdocrootにある必要があります。 IIS + ASP.NETは、.htmファイル、.cssファイル、.jsファイル、画像ファイル、暗黙的に。これらすべてのファイルはどこかにあります。デフォルトではc:\ inetpub\wwwrootですが、webappの場合は確実に異なります。公開するファイルの拡張子が.exeであるという事実は、IIS物理学。exeはdocrootの下に存在する必要があります。
もちろん、ファイルのコンテンツをResponse.OutputStreamに直接動的に書き込むこともできます。この方法では、.exeをdocrootに置く必要はありませんが、直接のダウンロードリンクではありません。このシナリオでは、ボタンをクリックしてファイルをダウンロードできます。
このようなもの:
Response.Clear();
string FullPathFilename = "\\\\server\\share\\CorpApp1.exe";
string archiveName= System.IO.Path.GetFileName(FullPathFilename);
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition", "filename=" + archiveName);
Response.TransmitFile(FullPathFilename);
Response.End();
NCシェア を試しましたか?
\\server\share\foo.exe