我正在尝试使用Project Centennial转换器(即桌面桥)将我的Win32应用转换为UWP应用 .
转换应用程序后,我需要调整 AppxManifest.xml
文件以确保以下内容:
-
正确配置了所有图标格式 .
-
我正确指定了以下应用资源:英语(美国),德语,法语和俄语 .
所以我按照this Windows 10 icon guide创建了以下 .png
图像,这些图像都放在了 Assets
文件夹中 . 我得到了这些:
我的 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="Street Address", 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>
那么有人可以回答这些问题:
-
我对指定正确尺寸和缩放的图标感到有些困惑 . 我做得对吗?
-
我是否还需要为
Assets\StoreLogo-50x50.png
图标指定缩放? -
最后,我是否正确指定了4种不同语言的资源?
EDIT :在等待的时候,我尝试用我展示的资产编译我的 AppxManifest.xml
. 但 makeappx.exe
工具给我以下错误:
MakeAppx:错误:错误信息:错误C00CE015:应用清单验证错误:应用清单必须按照架构有效:第22行,第27列,原因:元素'{http:// schemas上的属性'Square71x71Logo' . microsoft.com/appx/manifest/uap/windows10}VisualElements'未在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"
关于命名资产以进行缩放,我收到以下错误:
MakeAppx:错误:清单验证错误:第22行,第27列,原因:为元素“[local-name()='Applications'] / [local-name()=声明的文件名”Assets \ AppNameMedTile.png“包中不存在'application'] / [local-name()='VisualElements']“ . 如果此文件具有语言,缩放,对比度等的多个变体或资源版本,请使用/ l命令行选项禁用此验证 . MakeAppx:错误:清单验证错误:第23行,第27列,原因:为元素“[local-name()='Applications'] / [local-name()='声明的文件名”Assets \ AppNameAppList.png“包中不存在应用程序'] / [local-name()='VisualElements']“ . 如果此文件具有语言,缩放,对比度等的多个变体或资源版本,请使用/ l命令行选项禁用此验证 . MakeAppx:错误:包创建失败 . MakeAppx:错误:0x80080204 - 指定的包格式无效:包清单无效 .
使用建议的 /l
命令:
"C:\Program Files (x86)\Windows Kits\10\bin\x64\makeappx.exe" pack /l /d "path-to-folder-to-pack" /p "path-to\MyAppxPackage.appx"
用很多警告构建包 . 但是当我稍后安装它时,其中的所有图标似乎都是空白的 .
我必须在这里找到一些东西吗?
1 回答
我看到两个主要问题:你在错误的地方定义了瓷砖图像,而你根本没有谈论一个resources.pri文件 .
UAP架构非常复杂,但也有相当好的文档记录,因此请确保遵守其要求 . 特别是,uap:VisualElements element只有图像属性
Square150x150Logo
和Square44x44Logo
. 如果要定义其他大小,它们会在子项uap:DefaultTile element上输入属性 . 请注意,您的uap:ShowOn elements'属性包含的错误Square310x150Logo
应该是wide310x150Logo
.排除后,makeappx应该使用原始命令行成功,即没有额外的
/l
参数 . 但是,这还不足以让您的备用DPI图像显示出来 . 为此,您需要创建resources.pri文件 . 您可以手动执行此操作,使用makepri.exe创建模板priconfig.xml,更新它,然后再次调用makepri以从中构建resources.pri .或者,使用一个工具,为您创建一个包含resources.pri的应用程序包(例如Visual Studio),并提取resources.pri并将其添加到您的包中 . 只需确保您在包中使用的位置与工具创建的包中的位置匹配,因为相对路径存储在resources.pri文件中 . (作为奖励,您可以查看这个创建的AppxManifest.xml,以验证第一部分的结构是否正确 . 只是不要忘记使用桌面桥的应用程序将具有Visual Studio赢得的其他命名空间和功能'提议 . )