ネタ元:Introducing the Universal CRT
ちょっと、インパクトが大きいのでBlogにも書いておこっと。
VS2015 では、長年基本構成が同じだった C/C++ ランタイムに大幅なてこ入れが入ります(これ自体は、2014/01 の時点ですでに情報が出ています)。
この時は、msvcrXX と msvcpXX を見直して、VCRuntime, AppCRT, DesktopCRT の3部構成にするよ!CTP1 からそうなっるよ!というものでした。
CRTの構成が変わったからと言って、アプリケーションのビルドや配布自体が大きく変わるわけじゃないし、インパクトがあるといっても、直接的な影響を受けるのは、そろそろ絶滅危惧種に認定されそうな C++ アプリ配布をやらなきゃいけない Setup Author だけですからね。
彼らは本物のプロフェッショナルなので、この手の話題はいち早くキャッチアップしてるだろうし、今までだって名前が違ってたからそのままというわけにはいかなかったので作業量的にも変わらないし、影響は軽微だったから私も放置だったわけですけど(もちろん、中身の問題は別よw)。
で、今回ここをもう一度改め、AppCRT と DesktopCRT のうち、Stable(もうずっと変わっていない部分=C言語のライブラリ部分)な箇所をまとめなおして、Universal CRT って名前で統合するよ!に変わります。
ここまでなら、FBに1つになるんだってーって書いて終わりなんでしょうけど、影響が大きいのがそのあと。
Universal CRT に Stable なものに集約させるので、変更が入らないからシステムコンポーネント(Win10からプリインストール)にして、WindowsUpdate 経由で配布しますよ!
です。
どうやって配布するんだよ!という話はネタ元に載っているのでそちらを参照していただくとして。。。
超絶意訳モードでざっくりと書くと、
- Windows10 にプリインストールされてるから、何も考えたくないなら今すぐ Windows10 にすればいいと思うよ。
- 俺は、Vistaのあの背景がいいんだよ!という人でも、Windows Update で配布するから、家康よろしくなくまで待ってれば届くよ!
- Windows Update なにそれ?おいしいの?俺のマシンでMACアドレス作ると重複するかもよー!って怒られるんだけど?な人には、msu があるよ!
- システムコンポーネントだからマージモジュールはないよ!でも、それ以外のモジュールも含めて、今までと同じように VCRedist でまとめて配れるよ!
- スタティックリンクしてるなら今までと同じでUniversalCRT部分もスタティックリンクされるよ!
- でもね。Universal CRT は、アプリのローカルフォルダ(exeと同じ場所)への配置はサポートしてないよ。
というところですね。
実際はこんな風には書かれてませんよ。勉強会後の懇親会でしゃべってる風味にしてあるだけです。
ということで、これからは、C++アプリでもブートストラッパー必須の時代が来ます。まぁ msi 単独では msu を実行させることができないから仕方ないんですが。幸いにも先週初めから、うちも WiX Bootstrapper を使う方向で話が進んでるので、今年の段階で対応の基礎は出来上がりそうですけどねw