| 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) |