IE7+用の.NET4.0ベースのActiveXコントロールを作成しています。キーリーダーデバイスとのインターフェイスを管理する必要があります。私はそれを「行う方法」に関するいくつかの素晴らしいチュートリアルと記事に従い、現在はうまく機能しています。
私の問題は、自分のコントロールの他のバージョンを展開したいと思ったときに始まりました。
セットアップ展開プロジェクトと.CABのcabarcでVS2010を使用しています。1.0.0.0バージョンはうまくいきました。現在、1.0.2.0バージョンを機能させたいのですが、それはうまく機能していますが、IEは常にインストールを要求します。何回も何回も。
私がしたこと:
1:AssemblyInfoVersion.csをバージョン1.0.2.0に変更しました
2:バージョンに応じて.infファイルを1.0.2.0に変更しました
3:.msiバージョンを1.0.2に変更しました
そして、HTMLページのOBJECTタグを#version=1,0,2,0に変更しました
これまでのところ元気です。インストールされています!「プログラムのアンインストール」で確認できます。コントロールのバージョンは1,0,2です。すばらしいですが、IEは、ページを開くたびにダウンロードしてインストールすることを望んでいます。
Excelに接続されたスレッドを見ました:VB.NETで記述されたExcel用のCOMサーバーをインストールして自動化サーバーリストに登録するにはどうすればよいですか?
そして、レジストリ内の何かを変更する必要があるという有用な情報を入手しました。そこで検索を行ったところ、classIdをHKLM \ SOFTWARE \ Wow6432Node \ Classes \CLSID{GUID}の下に配置しました。
ここに次のサブキーがあります。InstalledVersion実装済みカテゴリInprocServer32ProgId
InstalledVersionの部分で、バージョンがまだ1,0,1,0であることがわかったので、嬉しかったです。1,0,2,0に変更しましたが...動作しませんでした。私はレジストリを調べましたが、InstalledVersionは1,0,2,0です。.dllのバージョンは1,0,2,0です。インストールされているコントロールのバージョンは1,0,2です。InprocServer32の下には、3つすべての1,0,0,0があります。1,0,1,0; 1,0,2,0バージョン。そしてもちろん、HTMLコードではバージョンも1,0,2,0です。
(私のマシンは64ビットWin7、IE9です)
誰かがこれを手伝ってくれるでしょうか、私が逃したことは?
このシナリオ全体に関するその他の問題:最初のインストールでバージョンが増加した後、開発マシンは問題なく再起動します。どのような設定でこの動作を実現できるかわかりますか?
アップデート:
問題は解決しました。このせいで私はちょっと盲目か少し疲れています。しかし、この問題は将来にとって重要かもしれません。
最初に問題に関する要約:新しいバージョンがデプロイされた後(クライアントに適切にインストールされた後)、IEは常にそのバージョンのインストールを提案していました。
問題の原因はレジストリにあります。InstalledVersion(Default)レジストリキーに厳密なバージョン番号が含まれている必要があります。
ここでは非常に特殊なケースがありましたが(原因はまだわかりません)、SubKey InstalledVersionの下に(デフォルト)のエントリが2つありました。最初のものは空で、2番目のものは厳密な値を含んでいました。最初のものは削除できませんでしたが、2番目のものだけを削除しました。最初の(デフォルト)を変更した後、すべてが機能しました。