none
VS2012 テンプレートのエクスポートを使ってストアアプリを作成する場合について RRS feed

  • 質問

  • 現在、Windows8(タッチパネル)にVisual Studio Professional 2012 を使用してストアアプリの開発を勉強しています。

    作成したストアアプリを複製して新しいプロジェクトを作る(そこから手を加える)場合、[テンプレートのエクスポート](プロジェクト形式)を利用しています。

    (1)他に良い方法がありますでしょうか?

    エクスポートしたテンプレートを選択して新しいプロジェクトを作成した場合、通常の[Windowsストア]のテンプレートを選択して作成した場合とでは、VS2012上では特に違いがわからず、動作も正常なのですが、1点気になることがあります。

    通常の[Windowsストア]のテンプレートを選択して作成した場合には、スタート画面(モダンスタイル)にアプリのタイル(グレーの×表示)が表示され、デスクトップ画面でVS2012を起動させなくても、アプリを起動することができます。(すべてローカルです。)

    ところが、エクスポートしたテンプレートを選択して新しいプロジェクトを作成した場合には、タイルは表示されません。

    (2)エクスポートしたテンプレートを選択して新しいプロジェクトを作成した場合でも、タイルを表示させる方法があるのでしょうか?

    どうぞ宜しくお願い致します。

    2013年2月10日 10:19

回答

  • エクスポートしたテンプレートに含まれる GUID が固定されたもの、つまりエクスポートした時点のプロジェクトと同じものが使われていませんか?
    マニフェストやプロジェクトファイルに書かれている GUID が同一になっているのであれば、テンプレートを一度 zip 展開して、$guid1$ ~ $guid5$ など のようにランダムで生成するように置き換えが必要だと思います。

    おそらくは Package.appxmanifest の Identity タグの Name 属性に書かれている GUID が同一であることが引っかかっていると予想します。(確かめてません、すみません)
    あとは、csproj(vbproj)にある ProjetGuid も別の GUID にしておきましょう。$guidN$ ですが、同じ番号を使ったところは同じ GUID になってしまうので、プロジェクト GUID とパッケージ GUID は別の GUID になるように $guid1$, $guid2$ のように使い分けてください。
    その後、再度 zip 圧縮してそれをテンプレートとして使うようにしましょう。

    【例】
    <ProjectGuid>{0F4D4AB7-458B-4A1F-A77B-D2D2F0ED6FAC}</ProjectGuid>
    → <ProjectGuid>$guid1$</ProjectGuid>
    <Identity Name="13b2a26f-a304-4c4b-af90-ddb8fba814d1" Publisher="CN=Owner" Version="1.0.0.0" />
    → <Identity Name="$guid2$" Publisher="CN=Owner" Version="1.0.0.0" />


    補足。
    ProjectTypeGuids は書き換えません。書き換えるべきものを見極めるためには、ストアアプリの本来のテンプレートで 2 つプロジェクトを作って、差分を比較してみるとよいでしょう。
    プロジェクトごとに違う GUID があれば、それはテンプレートでも毎回生成されるように $guid1$ などに置換が必要です。
    2013年2月10日 13:43
    モデレータ

すべての返信

  • エクスポートしたテンプレートに含まれる GUID が固定されたもの、つまりエクスポートした時点のプロジェクトと同じものが使われていませんか?
    マニフェストやプロジェクトファイルに書かれている GUID が同一になっているのであれば、テンプレートを一度 zip 展開して、$guid1$ ~ $guid5$ など のようにランダムで生成するように置き換えが必要だと思います。

    おそらくは Package.appxmanifest の Identity タグの Name 属性に書かれている GUID が同一であることが引っかかっていると予想します。(確かめてません、すみません)
    あとは、csproj(vbproj)にある ProjetGuid も別の GUID にしておきましょう。$guidN$ ですが、同じ番号を使ったところは同じ GUID になってしまうので、プロジェクト GUID とパッケージ GUID は別の GUID になるように $guid1$, $guid2$ のように使い分けてください。
    その後、再度 zip 圧縮してそれをテンプレートとして使うようにしましょう。

    【例】
    <ProjectGuid>{0F4D4AB7-458B-4A1F-A77B-D2D2F0ED6FAC}</ProjectGuid>
    → <ProjectGuid>$guid1$</ProjectGuid>
    <Identity Name="13b2a26f-a304-4c4b-af90-ddb8fba814d1" Publisher="CN=Owner" Version="1.0.0.0" />
    → <Identity Name="$guid2$" Publisher="CN=Owner" Version="1.0.0.0" />


    補足。
    ProjectTypeGuids は書き換えません。書き換えるべきものを見極めるためには、ストアアプリの本来のテンプレートで 2 つプロジェクトを作って、差分を比較してみるとよいでしょう。
    プロジェクトごとに違う GUID があれば、それはテンプレートでも毎回生成されるように $guid1$ などに置換が必要です。
    2013年2月10日 13:43
    モデレータ
  • Azuleanさん、コメントありがとうございます。

    確かにPackage.appxmanifestの Identity タグの Name 属性に書かれている GUID は元のプロジェクトの内容のままになっていました。

    コメントを参考にWebで検索していたところ、『プロジェクトと項目テンプレートのカスタマイズ』

    //msdn.microsoft.com/ja-jp/library/ms247119.aspx

    がありました。テンプレートの更新については『.vstemplate ファイルを検証』など、初心者の私には難しそうなので今回は見送りますが、疑問は解消しました。

    どうもありがとうございました。


    • 編集済み kosato 2013年2月10日 16:32
    2013年2月10日 16:05