[ https://issues.apache.org/jira/browse/CB-9359?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14635508#comment-14635508 ]
ASF GitHub Bot commented on CB-9359: ------------------------------------ Github user muratsu commented on a diff in the pull request: https://github.com/apache/cordova-windows/pull/102#discussion_r35133583 --- Diff: template/cordova/lib/build.js --- @@ -229,11 +268,66 @@ function buildTargets(msbuild, config) { if (msbuild.version == '4.0' && build.target == projFiles.win80) { build.target = 'CordovaApp.vs2012.sln'; } - return msbuild.buildProject(path.join(ROOT, build.target), config.buildType, build.arch); + + var otherProperties = { }; + // Only add the CordovaBundlePlatforms argument when on the last build step + if (shouldBundle && index === configsArray.length - 1) { + otherProperties.CordovaBundlePlatforms = bundleTerms; + } else if (shouldBundle) { + otherProperties.CordovaBundlePlatforms = build.arch; + } + return msbuild.buildProject(path.join(ROOT, build.target), config.buildType, build.arch, otherProperties); }); }, Q()); + + if (shouldBundle) { + return buildsCompleted.then(function() { + // msbuild isn't capable of generating bundles unless you enable bundling for each individual arch + // However, that generates intermediate bundles, like "CordovaApp.Windows10_0.0.1.0_x64.appxbundle" + // We need to clear the intermediate bundles, or else "cordova run" will fail because of too + // many .appxbundle files. + + console.log('Clearing intermediates...'); + var appPackagesPath = path.join(ROOT, 'AppPackages'); + var childDirectories = shell.ls(path.join(appPackagesPath, '*')).map(function(pathName) { + return { path: pathName, stats: fs.statSync(pathName) }; + }).filter(function(fileInfo) { + return fileInfo.stats.isDirectory(); + }); + + if (childDirectories.length === 0) { + throw new Error('Could not find a completed app package directory.'); + } + + // find the most-recently-modified directory + childDirectories.sort(function(a, b) { return b.stats.mtime - a.stats.mtime; }); + var outputDirectory = childDirectories[0]; + + var finalFile = ''; + + var archSearchString = bundleTerms.replace(/\|/g, '_') + (config.buildType === 'debug' ? '_debug' : '') + '.appxbundle'; + var filesToDelete = shell.ls(path.join(outputDirectory.path, '*.appx*')).filter(function(appxbundle) { + var isMatch = appxbundle.indexOf(archSearchString) === -1; + if (!isMatch) { + finalFile = appxbundle; + } + return isMatch; + }); + filesToDelete.forEach(function(file) { + shell.rm(file); --- End diff -- should we fail fast if we have trouble deleting a file? > Add support for app package bundling to Windows 8.1 / Windows 10 > ---------------------------------------------------------------- > > Key: CB-9359 > URL: https://issues.apache.org/jira/browse/CB-9359 > Project: Apache Cordova > Issue Type: Task > Components: Windows > Reporter: Rob Paveza > Assignee: Rob Paveza > > When generating a release build, developers are able to submit a single > binary (an .appx bundle) to the Windows Store to avoid having to upload > multiple app packages (particularly when building an architecture-specific > app). This task should add a --bundle flag to enable automatic creation of > an .appxbundle for upload of the app to the Store. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org For additional commands, e-mail: issues-h...@cordova.apache.org