JMP オートメーションを実行する機能を持つ C# アプリケーションがあります。 ユーザーが C# アプリケーションを起動すると、JMP がユーザーのシステムにインストールされていることを確認します。JMP がシステムにインストールされているかどうかを確認する方法について、この問題について JMP テクニカル サポートに問い合わせました。解決策は、レジストリ キーを探すことでした。
C# コードには、JMP がインストールされているかどうかを確認する bool があります。
bool jmpExists = Registry.ClassesRoot.OpenSubKey("TypeLib\\{DCD36DE0-78F8-11CF-9E68-0020AF24E9FE}\\1.0\\0\\win32", false) != null;
これまでのところ、少なくとも 2 台の PC (Windows 10 と JMP 13 がインストールされている) にはこのレジストリ キーがありませんが、10 台の PC にはレジストリ キーがあります。
レジストリ キーが欠落している 1 台の PC で、JMP 自動化を実行しようとしましたが (欠落しているレジストリ キーを無視して)、この PC では起動できませんでした。 次に、JMP 13 をアンインストールしてから JMP 13 を再インストールすると、レジストリ キーが存在し、JMP 自動化が正常に機能しました。
これは、JMP / 自動化のインスタンスを作成する C# コードです。
System.Runtime.InteropServices を使用します。
JMP.Application myJMP = new JMP.Application();
しかし、私のソフトウェアを使用しているユーザーの多くは JMP をカスタマイズしているため、JMP をアンインストールして再インストールするという考えは非常に望ましくありません。 (それ以外の場合、彼らの JMP は問題なく動作します)
一部のユーザーのコンピューターでこのレジストリ キーが欠落している理由がわかりませんか? (Windows 7 PC で JMP 13 を実行)
JMP を再インストールする以外に、この問題を解決する方法はありますか?レジストリ キーを持っていないコンピュータにレジストリ キーをコピーするだけの単純な問題かどうかはわかりません。 それが解決策である場合、レジストリキーをコピーしてインストールする方法が正確にはわかりません。
32 ビット JMP が 64 ビット バージョンにインストールされている場合、それらのキーが Wow ハイブに表示されることがあります。したがって、問題のキーは次の場所にあります。
HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\{DCD36DE0-78F8-11CF-9E68-0020AF24E9FE}\1.0\0\win32
ブライアン・コーコラン
JMP開発
ファイルの関連付けのリセットしたほうがいいそのレジストリ キーをリセットします。
ファイル > 設定 > Windows 固有
何らかの理由でそれが機能しない場合は、Regedit で自分でレジストリ キーを作成できます。
jmpExists 変数は、実際には「JMP がインストールされていて、JMP を自動化できる」ことを意味することに注意してください。