| Index: packagerEdge.py |
| diff --git a/packagerEdge.py b/packagerEdge.py |
| index 9fd5094a83d143423db5942fb4d9b143f5cc4353..ea9af4a4d335fce85c859c8fe845274e1c5d14b2 100644 |
| --- a/packagerEdge.py |
| +++ b/packagerEdge.py |
| @@ -37,8 +37,22 @@ def register_xml_namespaces(manifest_path): |
| return ns |
| +def get_appx_version(metadata, build_num): |
| + """Get the version number for usage in AppxManifest.xml. |
| + |
| + As required by the Windows Store, the returned version string has four |
| + components, where the 3rd component is replaced with the build number |
| + if available, and the 4th component is always zero (e.g. 1.2.1000.0). |
| + """ |
| + components = metadata.get('general', 'version').split('.')[:3] |
| + components.extend(['0'] * (4 - len(components))) |
| + if build_num: |
| + components[2] = build_num |
| + return '.'.join(components) |
| + |
| + |
| def update_appx_manifest(manifest_path, base_dir, files, metadata, |
| - release_build): |
| + release_build, build_num): |
| namespaces = register_xml_namespaces(manifest_path) |
| v_min, v_max = metadata.get('compat', 'windows').split('/') |
| @@ -60,6 +74,7 @@ def update_appx_manifest(manifest_path, base_dir, files, metadata, |
| ('_d:Identity', None, [ |
| ('Name', packager.get_app_id(release_build, metadata)), |
| ('Publisher', metadata.get('general', 'publisher_id')), |
| + ('Version', get_appx_version(metadata, build_num)), |
| ]), |
| ('_d:Properties/_d:PublisherDisplayName', author, []), |
| ('_d:Properties/_d:Logo', assets[50], []), |
| @@ -170,7 +185,7 @@ def createBuild(baseDir, type='edge', outFile=None, # noqa: preserve API. |
| # update incomplete appxmanifest |
| intermediate_manifest = os.path.join(manifest_folder, MANIFEST) |
| update_appx_manifest(intermediate_manifest, baseDir, files, metadata, |
| - releaseBuild) |
| + releaseBuild, buildNum) |
| # cleanup placeholders, copy actual images |
| shutil.rmtree(asset_folder) |