[
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: [email protected]
For additional commands, e-mail: [email protected]