WiX でインストーラを書いていて一番大変なのがGUIDの生成。ファイルが1つとか2つならまだいいですが、コンポーネントが100とか200とかざらにあるのがデスクトップアプリです(某ソフトのインストーラは477もありました)。
インストーラの作成はInstallShieldだよ!って人はいいんですけど、そうじゃなくてVSにWiX入れてガリガリ書いてます!って人だと何が大変って、GUIDを用意するのが一番大変だったりします。
ということで、さっとセットするためのマクロ。
- Sub InsertGUID()
- If IsNothing(DTE.ActiveDocument) Then
- Beep()
- Return
- End If
- DTE.UndoContext.Open("InsertGUID")
- Dim newGUID As System.Guid = System.Guid.NewGuid()
- DirectCast(DTE.ActiveDocument.Selection, TextSelection).Text = newGUID.ToString().ToUpper()
- DTE.UndoContext.Close()
- End Sub
Sub InsertGUID()
If IsNothing(DTE.ActiveDocument) Then
Beep()
Return
End If
DTE.UndoContext.Open("InsertGUID")
Dim newGUID As System.Guid = System.Guid.NewGuid()
DirectCast(DTE.ActiveDocument.Selection, TextSelection).Text = newGUID.ToString().ToUpper()
DTE.UndoContext.Close()
End Sub
わずか10行(オブジェクトを宣言しないでそのままにすれば9行)ですが、これで開発効率はおそらく数億倍は上がります。<いいすぎ!
実際ほかのツールの利用と違ってクリップボードは変更されないし、UNDOも一発で戻るし、ショートカットに登録しておけば、1アクションでセットできるし。
ただ、問題がないわけではないんですよねー。VSのマクロって次のバージョンには入ってないっポイんですわ。。。