2017年8月7日月曜日

VisualStudio2015+InstallShieldLEでコードサイニング証明書

これまでインストーラーを作成して、signtool.exe を起動してコードサイニング証明書を登録してましたが。

超めんどくさい(笑)

どっかにあるはずだ!と思ってググったけど、丁寧な説明を見つけられず。
しかたなく試行錯誤したら、簡単に登録できちゃいました。

メモとして記録しておきます。
1.スタートメニューで MMC コマンドを入力して起動します。






















2.MMCメニュー「ファイル」-「スナップインの追加と削除」を選択






















3.「証明書」をダブルクリック

















4.証明書を選択してコンテキストメニュー「すべてのタスク」-「エクスポート」を選択。















5.エクスポートウィザードで、秘密キーをエクスポートで「Personal Information Exchange-PKCS #12 (.PFX)」を選びます。




















※実はここで「正しくエクスポートされたときは秘密キーを削除する」をチェックしたものだから大変なことにw



6.パスワードを入力し、出力ファイル名を設定すれば完了します。





















7.Install Shield LE での設定は「6 Prepare for Release」-「Releases」タブで、URL、ファイル名、パスワードを入力し、対象ファイルを選びます。















以上の手続きで、インストーラにコードサイニング証明書が追加されました。


めでたしめでたし。

2017年8月1日火曜日

64bit Windows でサブクラスしたウィンドウが落ちる

メールソフト用のプラグインを作ってますが、なんかよく落ちるようになってしまったな、と感じてました。

VisualStudio でデバッグ中に例外が発生する場所が、サブクラス化したWindowプロシージャの部分で、ずいぶん前に書き上げたところだし、修正もかけてないから、さっぱりわかりませんでした。

で、ググってみたところ
https://stackoverflow.com/questions/41741448/random-crashes-on-windows-10-64bit-with-atl-subclassing
こんな情報がありました。

Windows のバグらしいです。
Windows 10 RS2 とかで修正されるらしいです。

じゃぁ、それまで待ちましょう・・・

と、思ってたのですが、プラグインをお使いいただいている方々もクラッシュしてしまってると申し訳ないし。

ということで、上記リンクに書いてある修正をやってみました。

atlstdthunk.h というファイルの25行目くらいにある
#define
USE_ATL_THUNK2 の行をコメントアウトして再コンパイルする
というものです。



実際にやってみようとすると、atlstdthunk.hは読み取り専用でエディタで変更できませんでした。
そこで。
E:\Common\VC14.0\
atlstdthunk.h にファイルをコピーして編集しました。

プラグインとライブラリのすべてのプロジェクト設定で、「プロパティ」を開き
「構成プロパティ」の「すべての構成」で「VC++ディレクトリ」の先頭に E:\Common\VC14.0を追加します。


これでライブラリとプロジェクトを再ビルドしましたところ、どうやら問題が解決したようです。

再現性がランダムのため、解決したかどうかは今後の経過を見なけりゃなりませんけどね。