【記述に誤りあり注意】Windows Terminal (Preview)がインストールできないあなたへ

# 【注意】この記事は誤りでした （2019/07/03 8:00）
はじめに、以降の手順ではv1803環境でインストールできないことが判明しました。
（ビルド自体は通ると思います）
　
そもそも、以下で

>設定ファイルをテキストエディタで開くなどして確認すると、ターゲットプラットフォームの指定が、1803に対応すると思われる 10.0.17763.0 になっています

というのが誤りで、当該ビルド番号はv1803に対応するものではないようです。

src\cppwinrt.buid.pre.propsを以下のように変更することで、どうにかならないか試していますが、まだうまくいくか分かりません。

```xml
<!-- <WindowsTargetPlatformVersion Condition=" '$(WindowsTargetPlatformVersion)' == '' ">10.0.17763.0</WindowsTargetPlatformVersion> -->
   <WindowsTargetPlatformVersion Condition=" '$(WindowsTargetPlatformVersion)' == '' ">10.0.16299.91</WindowsTargetPlatformVersion>
```

# はじめに
以下の記事のように、Windows Terminalを試してみたいと思ったあなた、ストアでは見つかるのにインストールできなかったりしませんでしたか？

[ストア版のWindows Terminal を試してみた- Developers.IO](https://dev.classmethod.jp/tool/try-windows-terminal-store-preview/)

>ストア版のWindows Terminalを試すにはWindows 10のビルド18362.0以上(Windows 10 May 2019 Update(1903)以降)である必要があります。

そういうことなんですよね。

1903の2つ前の1803までは、Windowsの更新を設定画面からチェックすればインストールできますが、今のところそれ以降は自分で明に当てない限り適用されないようです（OSのグレードや設定などによって違うかもしれません）。
　
当てたければ、

https://www.microsoft.com/en-us/software-download/windows10

にアクセスして、"Update now" ボタンを押してよろしくやっていけば入れられますが、MSが自動配信をあえて止めているアップデートということから想像がつくように、相応のリスクが現状あるようです。
　
しかし、Windows Terminalは試したい。
　
そんな時は野良ビルドを自分で作って入れちゃいましょう！
えっ、そんなことしても同じじゃないの？と思いますよね。私もReleasesのアップロード日時が9日前(この記事執筆時点から)とかだし、1903が必要なんやろーと思ったのですが、どうもこの記事執筆時の最新のReleasesでの配布コード(v0.2.1715.0)は、OSのバージョン1903を要求しないようなんですよね。設定ファイルをテキストエディタで開くなどして確認すると、ターゲットプラットフォームの指定が、1803に対応すると思われる 10.0.17763.0 になっています。

# 基本方針
- やり方はおおむね以下のページの方法を参考にさせてもらいました
    - [2019/05/14版_Windows Terminal をビルドしてみる（VS2019)・設定とキーバインド変更](https://nishikawasasaki.hatenablog.com/entry/2019/05/14/201102)
    - githubのmasterのHEADのコードと、Releasesのv0.2.1715.0 を使います
    - なんかいろいろ試してたらできた、的なところもあるので、記述が誤っていたり不足している場合もあるかもしれませんが、その点はご容赦下さい
    - 作業（ビルド含む）はVS2019と、コマンドプロンプトで行います

# ビルド作業 (githubのmasterをcloneしてきたのをどうこうするステップ)
- リポジトリトップ ( https://github.com/microsoft/terminal ) の Build Prerequisites の要件を満たしておくこと。ただし、1903環境であることと、1903 SDK は不要です（SDKはないと後述のgithubのコードをどうこうするときにダメだったりするかも・・・。でも1903環境じゃないとインストールできない気もするしなあ）
- 参考記事に従って、1-4, 7-8 をやる => ビルドは失敗する

# ビルド作業 (Releasesのコードをどうこうするステップ)
- incディレクトリのヘッダがなんか足りないので、githubからcloneしたきたディレクトリのdepを漁ってConsole, gsl, wil の3つのヘッダを内包しているディレクトリをコピーしてきて、Releasesのコードの方のsrc\incにペースト
- 参考記事の3と5を行う。ただし、5は参考記事とは逆でBOM無しのUTF-8Nに変換する。この作業は私はTera Padで開いて同キャラクターコードで保存する、という方法をとりました
- Releaseの方で 4 をする。起動するVSは2019なので間違えないこと
- ソリューションの構成を Debug, x64 にする (画面上部に出てるやつです）<= もしかしたら意味ないかも
- Host.EXEプロジェクトがそのままだとヘッダが見つからないとエラーになるので、プロジェクトのプロパティからコンパイラに渡すヘッダパスとして、src\incをよろしく追加しておいて下さい。ディレクトリを移動しないなら絶対パスを書いちゃってもいいでしょう
- VS2019を終了する
- コマンドプロンプトで、Releasesのコードのルードにcdして、リポジトリのトップページにビルド手順として書いてある以下を行う
    - $ tools\razzle.cmd
    - $ bcz
- これでパッケージは・・・できないのですが参考記事
    - [Windows Terminal (Preview) をビルドして使おう](http://mimumimu.net/blog/2019/05/08/windows-terminal-preview-%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%97%E3%81%A6%E4%BD%BF%E3%81%8A%E3%81%86/)
- 上の記事にも書いてありますが、コンパイル中に内部ヒープがどうのこうのとエラーになってしまう場合があります。私は Windows Terminal の VS Solution の設定変更が良く分からなかったので、以下の記事を参考に、ページファイルのサイズを単純に大きくしました。8GBぐらいにしたら、とりあえず起きなくなりました
    - https://devblogs.microsoft.com/cppblog/precompiled-header-pch-issues-and-recommendations/
- 多分、ビルドして使おうの記事に書いてあるように設定変更してソリューションを保存して、bczでビルドしても並列数の変更は有効になる気がしますが、試していないので分かりません

# インストール
- VS2019を立ち上げて、構成がDebug, x64になっていることを確認した上で、ビルド-ソリューションの配置を実行
- めでたくWindows Terminalが自分のマシンにインストールされた!!!
- となるはず・・・

# なんかもっさりしてる気がする・・・
- コマンドプロンプトでビルドする時のデフォルトの構成がDebugだからかもしれません
- razzleとbczを実行する時に rel という引数を与えるとリリースビルドになるっぽいです（試してないのでうまくいくかは分かりません）
- リリースビルドにした場合は、VS2019を立ち上げた時のソリューションの構成は Release, x64 にするように上記は読みかえて下さい

# パッケージ化して他のマシンにも入れたい
- なんか署名の問題とかでインストールできない・・・。ビルドしたマシンでも・・・。

以上、幸運を祈ります！