これは基本的なタスクのように思えますが、何らかの理由で解決策を見つけることができません。
検索プロバイダーをプログラムで Internet Explorer にインストールするにはどうすればよいですか? インストーラーに NSIS を使用しています。
これは基本的なタスクのように思えますが、何らかの理由で解決策を見つけることができません。
検索プロバイダーをプログラムで Internet Explorer にインストールするにはどうすればよいですか? インストーラーに NSIS を使用しています。
Internet Explorer 検索サービスを手動でインストールする公式に文書化された方法はないようです。公式の方法は実装するようです
window.external.AddSearchProvider("URL")
これを IE 7 以降で表示すると、ユーザーは検索サービスをインストールするように求められます。
ただし、少し調べてみると、少なくとも IE 8 は次の場所に検索サービスをインストールしているようです (NSIS 変数を使用)。
%LOCALAPPDATA%\Microsoft\Internet Explorer\Services\
(少なくとも 1 つの検索サービスをインストールした後で) そのフォルダーを調べて、構造を確認します。.ico と (おそらく) OpenSearch .xml ファイルが必要なようです。また、いくつかのレジストリ設定も必要です (後述)。
ただし、単純な検索 (自動提案なし) の場合は、レジストリに検索サービスを設定するだけで済むようです。レジストリ内の検索設定の場所は次のとおりです。
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes\{guid}
{guid} は、検索サービスを識別する GUID です。繰り返しになりますが、この種のことに関する公式のドキュメントはないようですので、他の検索サービスが行ったことを調べてください。たとえば、Google は、魔法を実現するために、URL で OpenSearch 置換を使用してサービスの URL を指定するだけです。
注: これに関する公文書は明らかに存在しないため、これらすべてが将来変更される可能性があります。(ブラウザーで) 公式の方法を使用しない場合、複数の異なるインストール方法をサポートすることになる可能性があります。
幸運を!
http://msdn.microsoft.com/en-us/library/cc849066(v=vs.85).aspxが IE8+ でサポートされている方法のようです。
http://www.microsoft.com/download/en/details.aspx?id=22015から IE8 SDK をダウンロードし、openservice.h および openservice.idl ファイルを使用して関連する関数を呼び出します。