2005年11月29日

VS2005でCustom Actionを定義したら・・・

現在、目下VS2005のアドインをどうやって作るか勉強中。
今日は、とりあえず適当なコードを作って、どうやってインストーラを作るか勉強してみた。

VS2005からはアドインの登録方法がレジストリからXMLファイルに変更になり(旧来の方法も使える模様)、以下のフォルダにそのXMLファイルを配置しろとのこと。

・All User
C:\Documents and Settings\All Users\Visual Studio 2005\Addins
・自分のみ
C:\Documents and Settings\<username>\My Documents\Visual Studio 2005\Addins
参考:MSDN2 - Add-In Registration

MSDN2 - How to: Upgrade Visual Studio .NET 2003 Add-ins to Visual Studio 2005 by Using XML Registration (Managed)では、
<drive>:\Document and Settings\All Users\Application Data\Microsoft\MSEnvShared\Addins
または
<drive>:\Document and Settings\yourusername\Application Data\Microsoft\MSEnvShared\Addins

と記載されている。どっちが正しいのやら・・・
どっちにしても、XMLファイルにはDLL名をフルパスで記載してあげないといけないのでたとえば、Program Filesの下にインストールしたかったらインストールしたあとにXMLを編集しないといけない。

となれば、Custom Actionの出番ということで以下のようにしてみた。
1.新しい項目の追加でInstaller Classを追加
2.Install / Commit / Rollback / Unintallのメソッドをオーバーライド
3.Setup ProjectでCustom Actionを追加

で、試しにコンパイルして、C:\Program Files\以下にインストールしてみようとしたら・・・。
file:///C:\Windows\System32\Files\AppName\ClassLibrary1.dllが見つかりませんというFileNotFoundExceptionが・・・。

VS2003はこれで普通にいけたのに・・・。
でも、エラーをよっく見てみるとFilesより先はインストールした場所を指そうとしている。
もしかして・・・、パスの解決間違ってる?
C:\Windows\System32\からインストールした場所に移動しようとして、間の空白でひっかかってるとか・・・。文字列をダブルコーテーションでくくらずに使おうとしてるとか・・・。

とりあえず、空白が入らないパスで試してちゃんと動くようならバグの可能性もあるかもしれないな〜。
posted by libaty at 00:16| 東京 🌁| Comment(0) | TrackBack(0) | VS-AddIn | このブログの読者になる | 更新情報をチェックする

2005年11月26日

(続)アドインで構成ファイルを使いたい

昨日の続き、、、
自分でAppDomainを作ってしまえばいいって感じで試してみたけど、
どうもVSとの通信の部分がうまくいかない。
Projectのキャストとか失敗しまくる・・・。
きっと、なんか悪いんだろうけど。

で、AppDomainを作らないで、AppDomain.CurrentDomain.SetupInformation.ConfigurationPathを書き換えるには?

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", filePath);

でできそうな感じだった。
試してみたところ、
devenv.exe.configから自分の構成ファイルに切り替わってた。
まだ、ちゃんと検証できてないのでそれは検証が出来次第ってことで。
posted by libaty at 01:12| 東京 ☁| Comment(0) | TrackBack(0) | VS-AddIn | このブログの読者になる | 更新情報をチェックする

2005年11月25日

アドインで構成ファイルを使いたい!

VS2003でもVS2005でも一緒なんですが(たぶん)、
基本的にはVSアドインで構成ファイルを使うことはできない(はず)。

というのも、たとえば、ConfiurationSettings.AppConfigプロパティは
AppDomain.CurrentDommain.SetupInformation.ConfigurationPathで設定されている構成ファイルを読み込みに行くんだけど、VSアドインだとこの値はdevenv.exe.configになっている。
つまり、VS自身の構成ファイルが読み込まれてる。

で、AppDomain.CurrentDommain.SetupInformation.ConfigurationPathはReadOnlyプロパティではないから、これを自分の構成ファイルのパスに書き換えてしまえ!と思ったら、ものの見事にはじかれました(ーー;)

続きを読む
posted by libaty at 00:56| 東京 ☀| Comment(0) | TrackBack(0) | VS-AddIn | このブログの読者になる | 更新情報をチェックする

2005年08月12日

原因不明

現在、VS.NET2003用のアドイン作成を必死に頑張ってる最中で・・・。

VS.NET 2003しかインストールしていないマシンではなんの問題もなく動くのに
VS.NET 2005をインストールしてある、もしくは過去にインストールしたことがある
マシンではインストールすらできない致命的状況。
※インストール中にカスタムインストーラ走らせてるからmsiのせいではない。

とりあえずログをとってみると、インストール時にレジストリにインストールパスを
書き込んでいるのだが、いざ使うときにそれが参照できないってことらしい。
しかし、キーはちゃんと登録されているし、なぜそんな状況になってしまうのか?

自分の手元に同じ環境が無いこともあり原因不明のまま、今日一日が終わりそう。
posted by libaty at 17:58| 東京 🌁| Comment(0) | TrackBack(0) | VS-AddIn | このブログの読者になる | 更新情報をチェックする

2005年06月28日

TaskListの制御

1日調べたけどようわからんかった・・・。

で、追加でまた調べてみたんだけど、
こんなんでもしかしたら・・・。

1.フィルタの切り替え
Window win = DTE.Windows.Item(Constants.vsWindowKindTaskList);
win.Activate()
win.DTE.ExecuteCommand("View.ALL", "");

ExecuteCommandはDTEに登録されているコマンドを実行するメソッド。
Ex) DTE.ExecuteCommand("Artemis.Connect.Artemis", "");
 で、Artemisが起動するとかね。

2.TaskItemの削除
これはやっぱり全件なめてヒットしたら消すってのがベターみたい。
もしくは、1.でArtemisにフィルタリングできれば、
TaskList.Selects()でArtemisのTaskItemが全件とれるはず。

がんばれ!!
posted by libaty at 23:24| 東京 ☁| Comment(0) | TrackBack(0) | VS-AddIn | このブログの読者になる | 更新情報をチェックする

2005年06月26日

Visual Studioにコマンドバーを追加する

VS AddInを作っていて、コマンドバーを追加する方法を調査したからメモメモ
たとえば、ツールメニューの中に新しい名前を作成してその中にメニューを入れるには。

//ツールメニューを示すObjectを取得
_CommandBars commandBars = applicationObject.CommandBars;
CommandBar toolMenu = (CommandBar)commandBars["Tools"]

//追加するメニューがすでに存在していないか確認
CommandBar test = commandBars["test"] as CommandBar;
if (test == null) {
 test = commands.AddCommandBar("test",
                vsCommandBarType.vsCommandBarTypeMenu,
                commandBar,
                1) as CommandBar;
 command.AddControl(test, 1);
}

これで、ツールメニューに"test"というメニュー項目ができて、そのなかに
commandオブジェクトのメニューが登録される続きを読む
posted by libaty at 22:17| 東京 🌁| Comment(0) | TrackBack(0) | VS-AddIn | このブログの読者になる | 更新情報をチェックする

2005年06月11日

アドインを作ってみる

最近やっとVS2003のアドインについて少しはわかってきた。
まず開発中のデバッグ関連
 前提
  アドインがインストールされているなら
  アドインのソリューションを開く前にアンインストールしておく

 開発作業
  とりあえずアドインをコンパイルできる状態にする
  アドインのセットアッププロジェクトをビルドし(Debugがいいかな)インストールする
  アドインプロジェクトがあるフォルダを開いて Reなんたらかんたら.reg を実行
  VS2003コマンドプロンプトから devenv /setup を実行
  アドインプロジェクトでデバッグ実行をかけるともれなくアドインが入った
  VS2003が開いてデバッグなり動作テストなりが可能。

 注意
  インストールは一回だけすれば以降アドインプロジェクトを開いている
  VSを閉じるまでデバッグ実行するだけで最新ビルドが反映される

 終了時
  開発作業を中断するときはアドインをアンインストールしておく
  (次回の作業開始を楽にするため)

アドインを作るときのいろんなオブジェクトについてはまたのちほど。
posted by libaty at 02:30| 東京 ☔| Comment(0) | TrackBack(0) | VS-AddIn | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。