cordova-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From drk...@apache.org
Subject [1/4] git commit: adds windows8 support
Date Thu, 07 Nov 2013 15:00:14 GMT
Updated Branches:
  refs/heads/master b87400e04 -> cad775120


adds windows8 support


Project: http://git-wip-us.apache.org/repos/asf/cordova-medic/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-medic/commit/cad77512
Tree: http://git-wip-us.apache.org/repos/asf/cordova-medic/tree/cad77512
Diff: http://git-wip-us.apache.org/repos/asf/cordova-medic/diff/cad77512

Branch: refs/heads/master
Commit: cad775120f5fbf845aeb7aa20b3acbef6eb0aa17
Parents: 867514f
Author: sgrebnov <sergei.grebnov@gmail.com>
Authored: Thu Nov 7 17:17:24 2013 +0400
Committer: David Kemp <drkemp@chromium.org>
Committed: Thu Nov 7 09:53:10 2013 -0500

----------------------------------------------------------------------
 build_windows8.js                   |  41 ++++++
 config.json.sample-windows          |   5 +-
 master.cfg                          |  32 ++++-
 repos.json                          |  17 ++-
 src/build/makers/windows8.js        | 228 +++++++++++++++++++++++++++++++
 src/build/makers/windows8/deploy.js |  55 ++++++++
 src/build/makers/wp8.js             |   4 +-
 src/utils/StoreAppLauncher.dll      | Bin 0 -> 5120 bytes
 src/utils/StoreAppLauncher.exe      | Bin 0 -> 5120 bytes
 9 files changed, 373 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-medic/blob/cad77512/build_windows8.js
----------------------------------------------------------------------
diff --git a/build_windows8.js b/build_windows8.js
new file mode 100644
index 0000000..658eb5f
--- /dev/null
+++ b/build_windows8.js
@@ -0,0 +1,41 @@
+var path = require ('path');
+var shell = require('shelljs');
+var buildinfo = require('./buildinfo');
+var config = require('./config');
+var windows8  = require('./src/build/makers/windows8');
+var argv = require('optimist').argv;
+var error_writer = require('./src/build/makers/error_writer');
+
+// this assumes that you start it in the sandbox
+
+var TEST_DIR=process.cwd().replace(/\\/g, '\\\\');
+var BRANCH='master';
+var TOOL_DIR=path.join(TEST_DIR,'medic');
+var MSPEC_DIR=path.join(TEST_DIR,'mobilespec');
+
+var TEST_OK=true;
+
+if(argv.branch) BRANCH=argv.branch;
+
+var output_location = path.join(MSPEC_DIR,'platforms','windows8');
+
+buildinfo('Windows8', BRANCH, function (error, sha ) {
+    if(error) {
+        TEST_OK=false;
+    } else {
+        // timeout to execute tests, 10 min by default
+        var test_timeout = config.app.timeout ? config.app.timeout : 10 * 60;
+
+        windows8(output_location, sha, config.app.entry, config.couchdb.host, test_timeout).then(function()
{
+                console.log('Windows8 test execution completed');
+            }, function(err) {
+                TEST_OK=false;
+                error_writer('windows8', sha, 'Windows8 tests execution failed.', err);
+            });
+    }
+});
+
+process.once('exit', function () {
+    if(!TEST_OK) process.exit(1);
+});
+

http://git-wip-us.apache.org/repos/asf/cordova-medic/blob/cad77512/config.json.sample-windows
----------------------------------------------------------------------
diff --git a/config.json.sample-windows b/config.json.sample-windows
index 091ce7f..23f23a3 100644
--- a/config.json.sample-windows
+++ b/config.json.sample-windows
@@ -15,7 +15,7 @@
             "git":"https://git-wip-us.apache.org/repos/asf/cordova-mobile-spec.git"
         },
         "entry":"autotest/pages/all.html",
-        "platforms":"wp8",
+        "platforms":"wp8 windows8",
         "release":"master",
         "timeout": 600
     },
@@ -23,6 +23,9 @@
         "target": "device",
         "TODO" : "add several targets support: emulators: WVGA, WXGA, 720p, 1080p or devices:
default or specified by id 7988B8C3-3ADE-488d-BA3E-D052AC9DC710"
     },
+    "windows8": {
+        "target": "local|emulator|device"
+    },
     "mail":{
         "to":["someone@someplace.com"],
         "from":"yourbuildbot@yourEmailService.com",

http://git-wip-us.apache.org/repos/asf/cordova-medic/blob/cad77512/master.cfg
----------------------------------------------------------------------
diff --git a/master.cfg b/master.cfg
index 3bbd5a4..ae63b33 100644
--- a/master.cfg
+++ b/master.cfg
@@ -33,13 +33,14 @@ with open("../config.json") as f:
 with open("../repos.json") as f:
     json_repos=json.load(f)
 
-platform_list=json_config['app']['platforms']    
+platform_list=json_config['app']['platforms']
 branch_release =str(json_config['app']['release'])
 
 build_android=('android' in platform_list)
 build_ios=('ios' in platform_list)
 build_wp8=('wp8' in platform_list)
-if build_wp8 and not is_Windows :
+build_windows8=('windows8' in platform_list)
+if (build_wp8 or build_windows8) and not is_Windows :
     log.err("wp8 and windows8 builds are supported on Windows platform only")
 
 projectbranches=['master',branch_release]
@@ -109,6 +110,9 @@ for jrepo in json_repos['repos'] :
     if(build_wp8 and title=="WP8") :
        c['change_source'].append(GitPoller(repo_url,project=title,category='PLATFORM', branches=getBranches([jrepo['release'],jrepo['current']]),
pollinterval=polltime))
 
+    if(build_windows8 and title=="WINDOWS8") :
+       c['change_source'].append(GitPoller(repo_url,project=title,category='PLATFORM', branches=getBranches([jrepo['release'],jrepo['current']]),
pollinterval=polltime))
+
 c['change_source'].append(pb.PBChangeSource(port=9999,user='Cordova',passwd='Cordova'))
 
 
@@ -189,7 +193,7 @@ common_steps_1 = [
 common_steps_mobilespec_1 = [
     ShellCommand(command=["mkdir","node_modules"],workdir='build/cordova-cli',haltOnFailure=True,description='prepare
Plugman',descriptionDone='Prepare Plugman'),
     ShellCommand(command=[shellCmd,shellRunParam, "git clone -b " + branches['PLUGMAN'] 
+ ' ' + repos['PLUGMAN'] + " plugman"],workdir='build/cordova-cli/node_modules',haltOnFailure=True,description='Update
Plugman',descriptionDone='Update Plugman'),
-    ShellCommand(command=["npm","install","--production"], workdir='build/cordova-cli/node_modules/plugman',haltOnFailure=True,description='Delete
Plugman',descriptionDone='Install Plugman'),
+    ShellCommand(command=["npm","install","--production"], workdir='build/cordova-cli/node_modules/plugman',haltOnFailure=True,description='Install
Plugman',descriptionDone='Install Plugman'),
     ShellCommand(command=["npm","install","--production"],workdir='build/cordova-cli',haltOnFailure=True,description='Install
CLI',descriptionDone='Install CLI'),
     ShellCommand(command=["node", "cordova-cli/bin/cordova","create","mobilespec","org.apache.mobilespec","mobilespec"],workdir='build',haltOnFailure=True,
description='CLI Create', descriptionDone='CLI Create')
 ]
@@ -298,8 +302,28 @@ if(build_wp8) :
     factory_wp8.addStep(ShellCommand(command=["cp","-f","cordova-js/pkg/cordova.windowsphone.js","mobilespec/platforms/wp8/www/cordova.js"],workdir='build',haltOnFailure=True,description='Copy
JS',descriptionDone='Copy JS'))
     factory_wp8.addStep(ShellCommand(command=["node", "medic/build_wp8.js"], workdir='build',
timeout=600,description='Deploy WP8',descriptionDone='Deploy WP8',name='Deploy WP8'))
 
-    c['builders'].append(BuilderConfig(name="wp8_master",slavenames=["windows-slave"], factory=factory_wp8))
+    c['builders'].append(BuilderConfig(name="WP8_Master",slavenames=["windows-slave"], factory=factory_wp8))
 
+if(build_windows8) :
+    factory_windows8 = BuildFactory()
+    factory_windows8.addStep(ShellCommand(command=[shellCmd,shellRunParam,"rm -rf %userprofile%/.cordova/lib/windows8"],workdir='build',haltOnFailure=False,description='Remove
cache',descriptionDone='Remove cache'))
+    factory_windows8.addSteps(common_steps_1)
+    factory_windows8.addStep(ShellCommand(command=[shellCmd,shellRunParam,"node .\\cordova-coho\\coho
repo-clone -r plugins -r mobile-spec -r windows -r js "],workdir='build',haltOnFailure=True,description='COHO
Clone', descriptionDone='COHO Clone'))
+    # TODO find the way to specify cli branch to clone for COHO, currently use step below
+    factory_windows8.addStep(ShellCommand(command=[shellCmd,shellRunParam, "git clone -b
" + branches['CLI'] + ' ' + repos['CLI'] + " cordova-cli"],workdir='build',haltOnFailure=True,
description='Get CLI', descriptionDone='Get CLI'))
+    factory_windows8.addStep(ShellCommand(command=["node","medic/checkout.js","--path=../../../repos.json","--cat=PLUGIN","--releasebranch="+branch_release],workdir='build',haltOnFailure=False,description='Plugins->dev',descriptionDone='Plugins->dev'))
+    factory_windows8.addStep(ShellCommand(command=["node","medic/checkout.js","--path=../../../repos.json","--cat=PLATFORM","--releasebranch="+branch_release],workdir='build',haltOnFailure=False,description='Platform->master',descriptionDone='Platform->master'))
+    
+    factory_windows8.addSteps(common_steps_mobilespec_1)
+    factory_windows8.addStep(ShellCommand(command=["node","medic/writejson.js","--branch=master"],workdir='build',haltOnFailure=True,
description='Write json',descriptionDone='Write json'))
+    factory_windows8.addStep(ShellCommand(command=["node","../cordova-cli/bin/cordova","platform","add","windows8"],workdir='build\\mobilespec',haltOnFailure=True,
description='Platform Add',descriptionDone='Platform Add'))
+    factory_windows8.addSteps(common_steps_js)
+    factory_windows8.addSteps(common_steps_mobilespec_2)
+    factory_windows8.addStep(ShellCommand(command=["cp","-f","cordova-js/pkg/cordova.windows8.js","mobilespec/platforms/windows8/www/cordova.js"],workdir='build',haltOnFailure=True,description='Copy
JS',descriptionDone='Copy JS'))
+    factory_windows8.addStep(ShellCommand(command=["node", "medic/build_windows8.js"], workdir='build',
timeout=600,description='Deploy Windows 8',descriptionDone='Deploy Windows8',name='Deploy
Windows 8'))
+
+    c['builders'].append(BuilderConfig(name="Windows8_Master",slavenames=["windows-slave"],
factory=factory_windows8))
+    
 # TODO. temporary disable separate cli and plugman tests on Windows
 if not is_Windows :
     factory_cli = BuildFactory()

http://git-wip-us.apache.org/repos/asf/cordova-medic/blob/cad77512/repos.json
----------------------------------------------------------------------
diff --git a/repos.json b/repos.json
index 24c2c03..54c016f 100644
--- a/repos.json
+++ b/repos.json
@@ -75,8 +75,15 @@
     "title" : "Windows Phone8 master",
     "categories" : ["WP8"],
     "branch" : "master",
-    "builder": "wp8_master",
+    "builder": "WP8_Master",
     "platform": "wp8"
+  },
+  {
+    "title" : "Windows 8 master",
+    "categories" : ["WINDOWS8"],
+    "branch" : "master",
+    "builder": "Windows8_Master",
+    "platform": "windows8"
   }
 ,
   {
@@ -147,12 +154,18 @@
     "release" : "master",
     "current" :"master"
 },{
+    "title" : "WINDOWS8",
+    "repo"  : "https://git-wip-us.apache.org/repos/asf/cordova-windows.git",
+    "category" : "PLATFORM",
+    "release" : "master",
+    "current" :"master"
+},{
     "title" : "MSPEC",
     "repo"  : "https://git-wip-us.apache.org/repos/asf/cordova-mobile-spec.git",
     "category" : "MSPEC",
     "release" : "master",
     "current" :"master"
-}
+},
 {
     "title" : "BATTERY",
     "repo"  : "https://git-wip-us.apache.org/repos/asf/cordova-plugin-battery-status.git",

http://git-wip-us.apache.org/repos/asf/cordova-medic/blob/cad77512/src/build/makers/windows8.js
----------------------------------------------------------------------
diff --git a/src/build/makers/windows8.js b/src/build/makers/windows8.js
new file mode 100644
index 0000000..f2ed3d4
--- /dev/null
+++ b/src/build/makers/windows8.js
@@ -0,0 +1,228 @@
+var shell        = require('shelljs'),
+    path         = require('path'),
+    n            = require('ncallbacks'),
+    deploy       = require('./windows8/deploy'),
+    fs           = require('fs'),
+    mspec        = require('./mobile_spec'),
+    couch        = require('../../couchdb/interface'),
+    q            = require('q');
+
+
+module.exports = function(output, sha, entry_point, couchdb_host, test_timeout, callback)
{
+
+    var packageName = 'org.apache.cordova.mobilespec.windows8';
+    var packageInfo = {};
+
+    function query_for_sha(sha, callback) {
+
+        var view = 'sha?key="' + sha + '"';
+        // get build errors from couch for each repo
+        couch.mobilespec_results.query_view('results', view, function(error, result) {
+            if (error) {
+                console.error('query failed for mobilespec_results', error);
+                callback(true, error);
+                return;
+            }
+            callback(false, result);
+        });
+    }
+
+    function isTestsCompleted(sha, callback) {
+        query_for_sha(sha, function(isFailed, res) {
+            // return True if there is no error and there are test results in db for specified
sha
+            callback(!isFailed && res.rows.length > 0);
+        });
+    }
+
+    function waitTestsCompleted(sha, timeoutMs) {
+       var defer = q.defer();
+       var startTime = Date.now(),
+           timeoutTime = startTime + timeoutMs,
+           checkInterval = 10 * 1000; // 10 secs
+
+        var testFinishedFn = setInterval(function(){
+
+            isTestsCompleted(sha, function(isSuccess) {
+                // if tests are finished or timeout
+                if (isSuccess || Date.now() > timeoutTime) {
+                    clearInterval(testFinishedFn);
+                    isSuccess ? defer.resolve() : defer.reject('timed out');
+                }
+            });
+        }, checkInterval);
+        return defer.promise;
+    }
+
+
+    function log(msg) {
+        console.log('[WINDOWS8] ' + msg + ' (sha: ' + sha + ')');
+    }
+
+    function prepareMobileSpec() {
+        // make sure windows8 app got created first.
+        var defer = q.defer();
+        try {
+            if (!fs.existsSync(output)) {
+                throw new Error('create must have failed as output path does not exist.');
+            }
+            var mspec_out = path.join(output, 'www');
+
+            log('Modifying Cordova Mobilespec application at:'+mspec_out);
+
+            mspec(mspec_out,sha,'',entry_point, function(err){
+                if(err) {
+                    throw new Error('Error thrown modifying Windows8 mobile spec application.');
+                }
+
+                log('Modifying Cordova windows8 application.');
+                // add the sha to the junit reporter
+                var tempJasmine = path.join(output, 'www', 'jasmine-jsreporter.js');
+                if (fs.existsSync(tempJasmine)) {
+                    fs.writeFileSync(tempJasmine, "var library_sha = '" + sha + "';\n" +
fs.readFileSync(tempJasmine, 'utf-8'), 'utf-8');
+                }
+
+                // modify start page
+                var manifest = fs.readFileSync(path.join(output, 'package.appxmanifest')).toString().split('\n');
+                for (var i in manifest) {
+                    if (manifest[i].indexOf('index.html') != -1) {
+                        manifest[i] = manifest[i].replace('index.html', entry_point);
+                        break;
+                    }
+                }
+
+                // for some reasons cordova-cli generates incorrect manifest file
+                // fix it and also set permanent package name to prevent multiple installations
+//                for (var i in manifest) {
+//                    if (manifest[i].indexOf('<Identity') != -1) {
+//                        var nameIndex = manifest[i].indexOf('Name="') + 6;
+//                        var endNameIndex = manifest[i].indexOf('"', nameIndex);
+//                        var stringAsArray = manifest[i].split('');
+//                        stringAsArray.splice(nameIndex, endNameIndex - nameIndex, packageName.split(''));
+//                        manifest[i] = stringAsArray.join('').replace(/,/g, '');
+//                        var versionIndex = manifest[i].indexOf('Version="') + 9;
+//                        var endVersionIndex = manifest[i].indexOf('"', versionIndex);
+//                        stringAsArray = manifest[i].split('');
+//                        var version = manifest[i].substr(versionIndex, endVersionIndex
- versionIndex);
+//                        while (version.split('.').length < 4) version += '.0';
+//                        stringAsArray.splice(versionIndex, endVersionIndex - versionIndex,
version.split(''));
+//                        manifest[i] = stringAsArray.join('').replace(/,/g, '');
+//                        break;
+//                    }
+//                }
+
+                manifest = manifest.join('\n').replace(/www[\\\/]img/g, 'images');
+                fs.writeFileSync(path.join(output, 'package.appxmanifest'), manifest);
+
+                // make sure the couch db server is whitelisted
+                var configFile = path.join(output, 'www', 'config.xml');
+                fs.writeFileSync(configFile, fs.readFileSync(configFile, 'utf-8').replace(
+                  /<access origin="http:..audio.ibeat.org" *.>/gi,'<access origin="http://audio.ibeat.org"
/><access origin="'+couchdb_host+'" />', 'utf-8'));
+
+                // specify couchdb server and sha for cordova medic plugin
+                var medicPluginCore = path.join(output, '..', '..', 'plugins', 'org.apache.cordova.core.medic',
'www', 'medic.js');
+                var content = fs.readFileSync(medicPluginCore).toString();
+                content = content.replace(
+                    /this\.couchdb = \'.*\'\;/, "this.couchdb = '" + couchdb_host + "';").replace(
+                    /this\.sha = \'.*\'\;/, "this.sha = '" + sha + "';"
+                );
+                fs.writeFileSync(medicPluginCore, content);
+                defer.resolve();
+            });
+        }
+        catch (e) {
+            defer.reject(e);
+        }
+
+        return defer.promise;
+    }
+
+    function parsePackageInfo() {
+        var d = q.defer();
+        var cmd = 'powershell Get-AppxPackage ' + packageName;
+        shell.exec(cmd, {silent:true, async:true}, function(code, output) {
+            if (code > 0) {
+                d.reject('getting package info failed with code ' + code);
+            } else {
+                output = output.split('\n');
+                for (var i = 0; i < output.length; ++i) {
+                    if (output[i].indexOf(':') == -1) continue;
+                    var key = output[i].split(':')[0].trim();
+                    var value = output[i].split(':')[1].trim();
+                    while (output[i + 1] && output[i + 1].indexOf(':') == -1) value
+= output[++i].trim();
+                    packageInfo[key] = value;
+                }
+                d.resolve(packageInfo['PackageFullName']);
+            }
+        });
+
+        return d.promise;
+    }
+
+    function removeInstalledPackage(fullName) {
+        var d = q.defer();
+        if (fullName) {
+            log('Application with the same name is already installed, removing...');
+            var cmd = 'powershell Remove-AppxPackage ' + fullName;
+            shell.exec(cmd, {async:true, silent:true}, function(code, output) {
+                if (code > 0) {
+                    d.reject('package removing failed with code ' + code);
+                }
+                else {
+                    d.resolve();
+                }
+            });
+        }
+        else {
+            d.resolve();
+        }
+
+        return d.promise;
+    }
+
+    function getAppId() {
+        var cmd = 'powershell (get-appxpackagemanifest (get-appxpackage ' + packageName +')).package.applications.application.id';
+        var d = q.defer();
+        shell.exec(cmd, {silent:true, async:true}, function(code, output) {
+            if (code > 0) {
+                d.reject('unable to get installed app id');
+            } else {
+                d.resolve(packageInfo['PackageFamilyName'] + '!' + output);
+            }
+        });
+
+        return d.promise;
+    }
+
+    function runApp(appId) {
+        var utilsDir = '\\..\\..\\..\\medic\\src\\utils';
+        shell.cd(output + utilsDir);
+        var d = q.defer();
+        // the following hack with explorer.exe usage is required to start the tool w/o Admin
privileges;
+        // in other case there will be the 'app can't open while File Explorer is running
with administrator privileges ...' error
+
+        var runner = path.join(output, 'AppPackages', 'runLocal.bat'),
+            storeAppLauncher = path.join(output, utilsDir, 'StoreAppLauncher.exe');
+        fs.writeFileSync(runner, storeAppLauncher + ' ' + appId, 'utf-8');
+
+
+        var cmd = 'explorer ' + runner;
+        console.log('Attempt to run the app via command: ' + cmd);
+        shell.exec(cmd, {silent:true,async:true}, function(code, output) {
+            // TODO: even if the command succeeded, code is '1'. must be investigated
+            // temporary added check for not empty output
+            if (code > 0 && output != "") {
+                d.reject('unable to run ' + appId);
+            } else {
+                d.resolve();
+            }
+        });
+
+        return d.promise;
+    }
+
+    return prepareMobileSpec().then(parsePackageInfo).then(removeInstalledPackage).then(function()
{
+            return deploy(output, sha);
+        }).then(getAppId).then(runApp).then(function() {
+            return waitTestsCompleted(sha, 1000 * test_timeout);
+        });
+}

http://git-wip-us.apache.org/repos/asf/cordova-medic/blob/cad77512/src/build/makers/windows8/deploy.js
----------------------------------------------------------------------
diff --git a/src/build/makers/windows8/deploy.js b/src/build/makers/windows8/deploy.js
new file mode 100644
index 0000000..dc1a244
--- /dev/null
+++ b/src/build/makers/windows8/deploy.js
@@ -0,0 +1,55 @@
+var shell = require('shelljs'),
+    q     = require('q');
+
+
+
+module.exports = function deploy(path, sha) {
+    function log(msg) {
+        console.log('[WINDOWS8] [DEPLOY] ' + msg + ' (' + sha + ')');
+    }
+
+    function build() {
+        var d = q.defer();
+        log('compiling the app...');
+        // 'restricted' is used to prevent powershell script (part of build.bat) which requires
user interaction to run
+        var cmd = 'powershell Set-ExecutionPolicy restricted && cordova\\build.bat';
+        shell.exec(cmd, {silent:true, async:true}, function(code, output) {
+            if (code > 0) {
+                log(output);
+                d.reject('build failed with code ' + code);
+            } else {
+                d.resolve();
+            }
+        });
+        return d.promise;
+    }
+
+    function addAppDevPackage() {
+        var d = q.defer();
+        shell.cd('AppPackages');
+        var packagesFolder = shell.ls('.');
+        for (var i in packagesFolder) {
+            // there are 2 items in AppPackages: folder with Add-AppDevPackage script and
.appxupload file
+            // find folder by extension: for some reasons shelljs 'test -d' returns false
+            if (packagesFolder[i].indexOf('.appxupload') == -1) {
+                shell.cd(packagesFolder[i]);
+                break;
+            }
+        }
+        shell.exec('powershell Set-ExecutionPolicy unrestricted', {silent:false, async:false},
null);
+
+        var cmd = 'powershell "& \'' + shell.pwd() + '\\Add-AppDevPackage.ps1\' -Force"';
// full path is required
+        shell.exec(cmd, {silent:false, async:true}, function(code, output) {
+            if (code > 0) {
+                log(output);
+                d.reject('deploy failed with code ' + code);
+            } else {
+                d.resolve();
+            }
+        });
+        return d.promise;
+    }
+
+    shell.cd(path);
+    return build().then(addAppDevPackage);
+}

http://git-wip-us.apache.org/repos/asf/cordova-medic/blob/cad77512/src/build/makers/wp8.js
----------------------------------------------------------------------
diff --git a/src/build/makers/wp8.js b/src/build/makers/wp8.js
index 243d3f4..d0cb349 100644
--- a/src/build/makers/wp8.js
+++ b/src/build/makers/wp8.js
@@ -84,8 +84,8 @@ module.exports = function(output, sha, devices, entry_point, couchdb_host,
test_
                 var index = 0;
                 while (mainPageLines[index].indexOf('InitializeComponent();') == -1) ++index;
                 ++index;
-                if (mainPageLines[index].indexOf('www/autotest/pages/all.html') == -1)
-                    mainPageLines.splice(index, 0, '            this.CordovaView.StartPageUri
= new Uri("www/autotest/pages/all.html", UriKind.Relative);');
+                if (mainPageLines[index].indexOf(entry_point) == -1)
+                    mainPageLines.splice(index, 0, '            this.CordovaView.StartPageUri
= new Uri("'+ entry_point + '", UriKind.Relative);');
                 fs.writeFileSync(path.join(output, 'MainPage.xaml.cs'), mainPageLines.join('\n'));
 
                 // set permanent guid to prevent multiple installations

http://git-wip-us.apache.org/repos/asf/cordova-medic/blob/cad77512/src/utils/StoreAppLauncher.dll
----------------------------------------------------------------------
diff --git a/src/utils/StoreAppLauncher.dll b/src/utils/StoreAppLauncher.dll
new file mode 100644
index 0000000..420c863
Binary files /dev/null and b/src/utils/StoreAppLauncher.dll differ

http://git-wip-us.apache.org/repos/asf/cordova-medic/blob/cad77512/src/utils/StoreAppLauncher.exe
----------------------------------------------------------------------
diff --git a/src/utils/StoreAppLauncher.exe b/src/utils/StoreAppLauncher.exe
new file mode 100644
index 0000000..59fffad
Binary files /dev/null and b/src/utils/StoreAppLauncher.exe differ


Mime
View raw message