Solidworksプラグインの動作原理

プラグインをインストールするプロセスはこんな感じです:
1.プラグインをひとまとめのファイルと考え、どこかに適当に置いた。例えばC:\1.dll
2. SWのインストールが完了したら、Windowsに通知して、このシステムにSWがインストールされたことを告げる必要がある。通知はレジストリによって行われ、そこにはSWのいくつかのファイル位置が記録されている。
3. プラグインをインストールする際、SWに通知し、C:\1.dllが御社のものだと伝えておく。君は私を覚えておいてくれ。だから、WindowsのレジストリのSWレジストリにさらに1件のレコードを記入する。SWが起動する時に、このレコードがあるおかげで、1.dllも一緒にインストールされ、プラグインと共に実行されるんだ。
この程度のものだ。もし1.dll、swがこのものが不正だと見れば、家庭用では使えないので、1.dllを含めず、プラグインがロードできないんだ。
前のものはアップグレードできない。SWの説明によると、C:\1.dllが古いバージョンのものだ。何らかの理由で1.dllは17バージョンに更新されるべきだが、実際には古いままである。
この1.dllを削除して新しいのに入れれば終わりだ

このプロセスにおいて、レジストリの唯一の用途は、道しるべの機能としてのものであり、1.dllが新しいものか古いものかを判断することはありません。
R1:「問題ない」は「没毛病」と訳さなければならない。以前、ある機能を使っている人が問題なく使っているのに、自分が使うと問題が発生するものがあった。例えば、そのショートカット名変更機能は、他の人が問題なく使っているのに、自分が使おうとすると問題が発生する。なぜなら、SWのAPIは異なるバージョンやSPパッチによって、バグがあるからだ。
SWでは、あることを実現するには多くの場合、複数の方法がある。例えば、通知メニューを使って「完了」という2文字を表示する場合、SWのAPIで実現することも、.NETのmsgboxで実現することもできる。
APIに問題があることに気づいたので、同じことを別の方法で実現します。
プラグインにはAPIのサポートが必要で、このAPIは私たちのソフトウェアのファイルではなく、あなたのお使いのコンピュータ内のSWのファイルです。プラグインはSWに通知するだけであって、あなたがファイルAを使ってあのことをするように促すだけです。貴社のファイルに問題があれば、私はどうしようもありません。
ここで前提がある、つまりAPIに問題があることが確かなら、自らメソッドを置き換えるのだ。メソッドを置き換えるというのは、swにファイルBを使ってあのことをするように言い、Aを迂回するということだ
方法は無限ではなく、私たちのレベルに関係している。もし私が問題がどこにあるのか分からなければ、対症療法を行うことができない。
管理者権限が必要なのは、どんなプログラムでもWindowsが信用できるわけではなく、Windowsにそのすべての操作を信頼するよう指示しなければならないからだ。Windowsが好きなら好きにやらせて、それから1.dllを変更させてくれるのだ,
上記の削除とは、あなたがdeleteしたりアンインストールしたりすることとは異なる。アンインストールのロジックがあるが、私はプロセスを簡略化しただけだ

上部へスクロール