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?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to