Help us understand the problem. What is going on with this article?

Titaniumで作ったWindows8.1アプリをWindows10用に変換したい

More than 3 years have passed since last update.

2016/2月時点で、私の知る限りでTitaniumでWindows10で動くアプリを作ろうとした場合、下記のようなコマンドでビルドすることになります。

appc ti build -T ws-local -p windows

これでアプリ自体はビルドでき、Windows10上でも動くは動くのですが、色々調べた結果「どうもこれはWindows8.1のアプリとしてビルドしていて、それをWindows10の下位互換機能で動かしているだけなのでは…」と察し始めました。

じゃあ、Titaniumを使って正式にWindows10ビルドはできないのでしょうか。
本記事は、Titaniumを使って正式にWindows10ビルド対応させようとして色々試みた結果を手順ログとして残すものです。

最初に結論から言っておくと、Windows10のソリューションに変換するところまではできましたが、ストアビルドができませんでした。エラーの感じから推測するに、Titanium側がWindows8系のなにかを参照している感じがするので、そのうち対応してくれるといいな…と思っています。(他に方法あれば教えてください!)

検証の経緯

そもそもの発端として、Windows8ビルドとWindows10ビルドで同じサイズを指定してもUIのサイズが違ってしまうという問題がありました。
この記事で「ネイティブでもWin8⇔Win10間のサイズに違いがある」という結論が出たので、じゃあTitaniumでもWindows10をビルドターゲットにすれば、ネイティブのWindows10のUIのサイズと同じで表示されるのかな、と思ったわけです。

しかし現状Titaniumでビルドすると、Windows8.1のソリューションとしてビルドされてしまう模様。
どうにかして、Titaniumで作ったソリューションをWindows10のものにして、Windows8のそれ比較できないか?というのが、本検証に至った経緯です。

1.png

(↑Titaniumでビルドターゲットをws-localにしてビルドしたやつをVisual Studioで展開したときのキャプチャ。しっかりWindows8.1扱いになっている)

方法1:appcコマンドのオプションでWindowsSDKを指定

@yagi_ さんのこちらの記事にうっすら出ているのですが、appcコマンドのオプション「-S 10.0」でどうもWindows SDKのバージョンを選べるようです。
しかし-Sのところの但し書きに「ターゲットがwp-emulatorかwp-deviceかdist-phonestoreでないと選べないよ」と書いてあるのがあやしいですね。どう考えてもこれ、Windows8専用のやつでしょ…
だめだろうなと思いつつ下記を試しました。

appc ti build -T ws-local -p windows -S 10.0
appc ti build -T wp-device -p windows -S 10.0
appc ti build -T wp-emulator -p windows -S 10.0 
appc ti build -T dist-phonestore -p windows -S 10.0

はい、全部だめでした!!!

方法2:Visual Studio経由でWindows SDKのバージョンを変更する

しかたないので、いつもの下記コマンドでとりあえずビルドします。

appc ti build -T ws-local -p windows

この時点ではWindows8.1でビルドされてしまっているので、ここからWindows10にビルドし直す必要があります。

Windowsのビルドターゲットを変える方法は下のURLを参考にしました。
下記を参考にビルドターゲットを変えて、VisualStudio経由でビルドしてみることにします。
https://msdn.microsoft.com/ja-jp/library/ff770576(v=vs.100).aspx

手順1:ApplicationTypeRevisionの変更

build\windows\store.x86以下には、拡張子が「.vcxproj」のファイルがいくつかあります。
この中にビルドのターゲットSDKのバージョンの記載があるようです。該当タグは<ApplicationTypeRevision>なので、build\windows\store.x86以下をgrepして<ApplicationTypeRevision>のタグの値を8.1から10.0に置換します。

手順2:Visual Studioのバージョンの変更

UWPアプリはVisual Studio 2015以上で作れるので、Visual Studioのバージョンの設定も変更する必要がありました。そこで、build\windows\store.x86以下のファイル内の<MinimumVisualStudioVersion>を12.0(VS2013)から14.0(VS2015)に置換します。
同じように、<PlatformToolSet>の値もv120からv140に置換しました。
(もしかしたらミニマムの方はいらなかったかもしれない、念のため)

この時点でWindows10アプリとしてVisual Studioに認識されるようにはなりました。

2.png

ですが、Visual Studioからストアアプリとしてビルドしようとしてもエラーになります。

手順3:アプリケーションプロパティの再設定

下記URLを参考に、プロジェクトのプロパティを設定しなおします。(Win10SDKのバージョンは自分の環境にあわせました)
http://dev.activebasic.com/egtra/2015/08/03/823/
自作したほうだけでなく、TitaniumWindows_Nativeのほうのソリューションにも同じ内容を適用する必要があるのに注意です。

手順4:アプリケーションマニフェストの修正

上記手順で、ストアビルドが選択できるようになりました。
しかし置換に失敗でもしたのか、アプリケーションマニフェストが不正でビルドできないというエラーが出ました。
しかたないので適当なUWPアプリ(ネイティブ)を作って、package.manifestの内容(XML)をコピペして移植しました。

そしてエラーになる

ここで、とうとうVisual Studioからストアビルドが選べるようになりました。しかし、実行するとエラーでコケてしまいます。
ログの内容に「WinRT」という文言が見えたりする?ので、もしかするとWindows8.1系の何かを参照しに行ってエラーになっているのかなあと思っています。

アップデートされたら、この試み全部無駄になるかなぁ…でも無駄になってもいいから、Windows10アプリとしてビルドできるようになってほしいなあ…。

flat-8-kiki
Python/AWS/機械学習(CNN)/Javascript/Obj-C/Swift/Android Java/C#/UWP/PHPらへんを覗くとき、上記(略)もまたお前を覗いているのだ… ※記載内容は個人に帰属し、所属組織を代表するものではありません。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした