2016-10-07 9 views
1

Win32アプリケーションをプロジェクトセンテニアルコンバータ(例:デスクトップブリッジ)を使用してUWPアプリケーションに変換しようとしています。デスクトップブリッジ(プロジェクトセンテニアル)を使用して変換されたWin32アプリケーションのUWPアプリケーションアイコンを正しく構造化する方法

アプリが変換された後、私は次のことを確保するためにAppxManifest.xmlファイルを調整する必要があります。

  • すべてのアイコンのフォーマットが正しく設定されていること。

  • 私は、英語(米国)、ドイツ語、フランス語、ロシア語のアプリリソースを正しく指定しています。

だから私はthis Windows 10 icon guideを踏襲し、すべてのAssetsフォルダに入れた次.png画像を作成しました。

enter image description here

そして、私のAppxManifest.xmlは、次のような構造化されました:私はこれらを得た

<?xml version="1.0" encoding="utf-8"?> 
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:uap2="http://schemas.microsoft.com/appx/manifest/uap/windows10/2" xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"> 
    <Identity Name="MyApp.Name" ProcessorArchitecture="x86" Publisher="CN=My Name, O=My Name, STREET=&quot;Street Address&quot;, L=City, S=State, PostalCode=12345, C=US" Version="1.2.3.4" /> 
    <Properties> 
    <DisplayName>MyApp.Name</DisplayName> 
    <PublisherDisplayName>PublisherName</PublisherDisplayName> 
    <Logo>Assets\StoreLogo-50x50.png</Logo> 
    </Properties> 
    <Resources> 
    <Resource Language="en-us" /> 
    <Resource Language="de-DE" /> 
    <Resource Language="fr-FR" /> 
    <Resource Language="ru-RU" /> 
    </Resources> 
    <Dependencies> 
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14342.0" MaxVersionTested="10.0.14342.0" /> 
    </Dependencies> 
    <Capabilities> 
    <rescap:Capability Name="runFullTrust" /> 
    </Capabilities> 
    <Applications> 
    <Application Id="MyApp.Name" Executable="VFS\Users\ContainerAdministrator\AppData\Local\PublisherName\App Name\RunFile.exe" EntryPoint="Windows.FullTrustApplication"> 
     <uap:VisualElements DisplayName="My App Name" Description="My app does this ... and this ..." 
          BackgroundColor="#aabbcc" 
          Square71x71Logo="Assets\AppNameSmallTile.png" 
          Square150x150Logo="Assets\AppNameMedTile.png" 
          Square310x150Logo="Assets\AppNameWideTile.png" 
          Square310x310Logo="Assets\AppNameLargeTile.png" 
          Square44x44Logo="Assets\AppNameAppList.png" 
          > 
     <uap:DefaultTile> 
      <uap:ShowNameOnTiles> 
      <uap:ShowOn Tile="square150x150Logo" /> 
      <uap:ShowOn Tile="Square310x150Logo" /> 
      <uap:ShowOn Tile="Square310x310Logo" /> 
      </uap:ShowNameOnTiles> 
     </uap:DefaultTile> 
     </uap:VisualElements> 
     <Extensions /> 
    </Application> 
    </Applications> 
</Package> 

だから誰かがこれらの質問に答えることができます。

  1. 私はアイコンの指定について多少混乱しています正しいサイズとスケーリングのために。私はそれを正しくしましたか?

  2. Assets\StoreLogo-50x50.pngアイコンのスケーリングを指定する必要がありますか?

  3. 最後に、4つの異なる言語のリソースを正しく指定しましたか?

EDIT:待っている間、私は私が示した資産を持つ上に、私のAppxManifest.xmlをコンパイルしてみました。しかしmakeappx.exeツールは私に次のエラーを与える:

MakeAppx : error: Error info: error C00CE015: App manifest validation error: The app manifest must be valid as per schema: Line 22, Column 27, Reason: The attribute 'Square71x71Logo' on the element '{ http://schemas.microsoft.com/appx/manifest/uap/windows10 }VisualElements' is not defined in the DTD/Schema.

それは明らかに次のアイコンのサイズを好きではない:

Square71x71Logo 
Square310x150Logo 
Square310x310Logo 

しかし、その後、私がしようとしたとき、私は、AppxManifest.xmlから上のアイコンのサイズを削除しても、以下のコマンドでそれをパックする:

"C:\Program Files (x86)\Windows Kits\10\bin\x64\makeappx.exe" pack /d "path-to-folder-to-pack" /p "path-to\MyAppxPackage.appx" 

私は、スケーリングのための資産の命名に関する次のエラーを取得:

以下のような提案 /lのコマンドを使用して、

MakeAppx : error: Manifest validation error: Line 22, Column 27, Reason: The file name "Assets\AppNameMedTile.png" declared for element "[local-name()='Applications']/[local-name()='Application']/[local-name()='VisualElements']" doesn't exist in the package. If this file has multiple variations or resource versions for language, scale, contrast, etc., use the /l command line option to disable this validation. MakeAppx : error: Manifest validation error: Line 23, Column 27, Reason: The file name "Assets\AppNameAppList.png" declared for element "[local-name()='Applications']/[local-name()='Application']/[local-name()='VisualElements']" doesn't exist in the package. If this file has multiple variations or resource versions for language, scale, contrast, etc., use the /l command line option to disable this validation. MakeAppx : error: Package creation failed. MakeAppx : error: 0x80080204 - The specified package format is not valid: The package manifest is not valid.

"C:\Program Files (x86)\Windows Kits\10\bin\x64\makeappx.exe" pack /l /d "path-to-folder-to-pack" /p "path-to\MyAppxPackage.appx" 

は警告の多くのパッケージをビルドします。しかし、後でインストールすると、その中のすべてのアイコンが空白に見えます。

ここには何かがあるはずですか?

+0

私は質問#3に興味があります... – m02ph3u5

答えて

2

2つの主な問題があります。間違った場所にタイル画像を定義していて、resources.priファイルについて話していないとします。

UAPスキーマはかなり複雑ですが、合理的に文書化されているため、要件を尊重してください。特に、uap:VisualElements elementの画像属性はSquare150x150LogoSquare44x44Logoのみです。他のサイズを定義する場合は、子の属性に移動します。uap:DefaultTile elementuap:ShowOn elements'の属性にはSquare310x150Logoという不正な値が含まれていますが、代わりにwide310x150Logoである必要があります。

これを並べ替えると、オリジナルのコマンドライン、つまり追加の/lパラメータなしでmakeappxが成功するはずです。ただし、代替DPIイメージが表示されるには、これでは不十分です。そのためには、resources.priファイルを作成する必要があります。これを手動で行うには、makepri.exeを使用してpriconfig.xmlテンプレートを作成し、更新してからmakepriを再度呼び出してresources.priをビルドします。

代わりに、あなたのためのresources.priを持つアプリケーションパッケージ(Visual Studioなど)を作成するツールを使用し、resources.priを抽出してパッケージに追加します。相対パスはresources.priファイルに格納されているので、パッケージで使用する場所とツールで作成したパッケージの場所が一致していることを確認してください。 (これはAppxManifest.xmlを見れば、最初の部分の構造が正しいことを確認することができます。デスクトップブリッジを使用しているアプリケーションには、Visual Studioが獲得した追加の名前空間と機能が追加されることを忘れてください。あなたのご意見ありがとうございます。

+0

あなたのご意見ありがとうございます。私はVSを使ってこのプロジェクトを作成していますが、もともとはC++のソリューションなので、UWPのものは含まれていません。 Win32アプリケーションのMSIインストーラから、Microsoftの[Desktop Bridge converter](https://developer.microsoft.com/en-us/windows/bridges/desktop)を使用して、結果として得られた 'AppxManifest.xml'を導き出しました。 – c00000fd

+0

;それは問題ではありません。明確にするために、 "交互に..."の段落はresources.priを自分で作成する代わりのものとして意図されています。私はまだ手動であなたのAppxManifestを修正することをお勧めします。 (あなたの構造を確認するためにVSで作成したものを完全に相互参照することはできますが、その考えを答えに追加します)。 –

関連する問題