VS2010用で拡張機能マネージャーからNuGet PackageManagerを入れてみた。
» VisualStudioのブログ記事
概要
マクロ屋本舗/LicenseManagerは、Windowsアプリケーション開発者およびVBA/マクロ開発者向けのライセンス管理システムです。
LicenseManager(exeファイルと認証ファイル)を作成されたプログラム中に組み込むことで簡単にライセンス認証を行うことが可能です。
ライセンス認証は、オンライン認証とオフライン認証の両方に対応しています。
主な機能
- ライセンスキーの作成機能
- ライセンスキーの発行機能(メール送信機能)
- ユーザー用のライセンスキー登録インターフェースの提供
- 発行済みライセンスキーの無効化機能(不正利用防止用)
- ソフトウェア利用状況の確認機能
- フィードバック機能
- フィードバックお知らせ機能
4種類×4タイプ≒計14タイプの機能別ライセンスキーの作成が可能。
ライセンスキー種類によって、オンライン認証,オフライン認証,アクセスログの記録の有無を識別されます。
また、ライセンスキーには、標準型,起動回数制限型,有効日数型,有効期限型のタイプがあります。
発行したライセンスキーをメールでユーザーに配信することができます。
ユーザーがライセンスキーを登録・停止するためのユーザーインターフェースを提供します。
既に発行したライセンスキーで不正利用が発覚した場合は、当該ライセンスキーを無効にすることができます。また、不正利用の指標となる指数がわかります。
ライセンスキー毎に起動回数がわかるので、ソフトウェアがどの程度利用されているかを把握することが可能です。
ユーザーがソフトウェア開発者への質問や意見を入力・送信するためのインターフェースを提供します。
ユーザーからソフトウェア開発者への質問や意見があった場合に、メールでお知らせします。
LicenseManagerのメリット
販売されたソフトウェアのライセンスキーが登録された時点で課金されるので、ソフトウェアの販売価格にライセンス管理料を組み込むことで、開発者の実質的な負担は無料となります。
LicenseManagerの仕組み(抜粋)
現在、自ソフトに組み込み、テスト運用中です。
興味のある方はご連絡を…
ほんとにメモです。
出典: http://msdn.microsoft.com/ja-jp/library/kz0ke5xt.aspx
- セットアップ プロジェクトのディレクトリで、新しい Uninstall.bat ファイルを作成します。
- セットアップ プロジェクト内で、ProductCode プロパティ ([[12345678-1234-1234-1234-123412341234]] などの値) をコピーします。
- Uninstall.bat を編集して次を含む 1 行を挿入します。ProductCode は手順 2. でコピーした値です。
- セットアップ プロジェクトのアプリケーション フォルダーに Uninstall.bat を追加します。
- Uninstall.bat を右クリックし、[ショートカットの作成] を選択してショートカットを作成します。
- セットアップ プロジェクトで、適切な [スタート] メニュー フォルダーにショートカットを含めます。
- ショートカットの名前を “
のアンインストール” などに変更します。
Msiexec /x ProductCode
ProductCodeは、{###…###}の形式で「{ }」が必要です。
作成したショートカットは、最小化で起動させるようにプロパティを変更します。
そうしないと、コマンドプロンプトの画面が表示されます。
また、アイコンを適当なものに変更した方がよいです。
バッチファイル(*.bat)ではなく、VBScriptでも同様な処理が可能です(たぶん)。
VisualStudioでVSTOを使ったプロジェクトを開いていて、PCが強制終了された場合、あるいは、休止状態から復帰した場合に、リボンインターフェースでエラーがよく出ます。
無視して続けると、問題なく表示されますが、上書き保存しても、次回以降プロジェクトを開いた時に毎回同じ状態になります。
何とかならないか?
追記(2011/08/19)
ちなみに、リボンインターフェースのファイルには悪いところはありません。
新たな編集を加えると治るようです。(知らないうちにこのエラー出なくなっていた。)
追記(2011/08/20)
無視して続行すると、オブジェクトイベントの関連づけが全て消えてしまうことが発覚しました。
Private Sub Button1_Click(~省略~) Handles Button1.Click
~ 中略 ~
End Sub
上記のイベントプロシージャのHandles の部分が消えます。
とにかく毎回Handles 句を記述し直すのもアホらしいので、どこに原因があるのかを調べてみました。
結論からいうと、リボンインターフェースの記述自体には特に問題はありません。
小生の行った作業は次の通り。
(1)リボンインターフェースのプロシージャを全て削除する
Imports句とPublic Class HogeHoge ~ End Classの宣言は残します。
自分が追加したプロシージャのみ削除します。
なお、実際には削除ではなく、メモ帳などにコピーを残しておきます。
(2)削除したプロシージャを一つずつ復活させていく。
プロシージャを復活させる都度、リボンインターフェースにエラーが表示されないことを確認します。
(3)エラーが確認された場合は、問題のプロシージャを精査します。
小生の場合は、プログラム記述時に、処理内容別に#region句で区切るので、#region句毎に復活させていったところ、右クリックメニューを生成するプロシージャを復活させた時にエラーがでました。
このプロシージャには、リボンインターフェースとは関係なく自分でオブジェクトを生成し、WithEvents句で宣言したオブジェクトのイベントをHandles句で記述していました。
これが原因なのかと考え、今度は、#Region句単位ではなく、プロシージャ単位でコードを復活させたら、何事もなかったかのようにエラーは出なくなりました。
結局のところ、原因はわかりません。
先日製作したEasyPrint for Word 2010を Word2007でも使えるようにするために、VS2010とWord2007環境(.NetFramework3.5)で移植している最中だ。
しかしながら、エラーが発生。
発生箇所は、ThisAddInクラスだ。
ちなみに、ThisAddInクラスには一切手を加えていない。
Fig.1 ThisAddInクラスのエラー
Fig.2 ThisAddInクラスのエラー
VS2010+Word2010環境では、Windowsインストーラーでを作成する時に.NetFramework4.0でアドインを作成していると、うまく動かないことは以前のブログにも書いたとおりだ。
それを踏まえて今回は.NetFramework3.5 で最初から作っていたのだが、これが仇になったようだ。
.NetFramework3.5では、アドイン自体がエラーになってしまうのだ。
これを.NetFramework4.0にすると、このエラーは消える。
そんなわけで、今は.NetFramework4.0でアドインを作成している。
WindowsインストーラーでのSetupファイル作成時にまた困りそうな予感が…^^;