cordova-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From axemcl...@apache.org
Subject [7/7] cordova-windows git commit: CB-8923 Add support for Windows 10 platform
Date Tue, 28 Apr 2015 04:08:55 GMT
CB-8923 Add support for Windows 10 platform

github: closes #70


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

Branch: refs/heads/windows10
Commit: 0d2387d95433c62b9efdbc509a627ed7277283b4
Parents: 653b7d1
Author: Rob Paveza <Rob.Paveza@microsoft.com>
Authored: Thu Apr 23 16:26:40 2015 -0700
Committer: Parashuram <code@nparashuram.com>
Committed: Mon Apr 27 21:08:19 2015 -0700

----------------------------------------------------------------------
 .jshintignore                                 |     1 +
 NOTICE                                        |    12 +-
 README.md                                     |    11 +-
 RELEASENOTES.md                               |    18 +
 VERSION                                       |     2 +-
 bin/lib/create.js                             |     2 +-
 cordova-windows10.md                          |   159 +
 spec/unit/Prepare.Win10.spec.js               |   398 +
 spec/unit/Version.spec.js                     |   145 +
 spec/unit/build.spec.js                       |    15 +-
 spec/unit/package.spec.js                     |    11 +-
 spec/unit/run.spec.js                         |     2 +-
 template/CordovaApp.Windows10.jsproj          |   104 +
 template/CordovaApp.sln                       |    32 +-
 template/WinJS/css/ui-dark.css                |  7663 ++
 template/WinJS/css/ui-light.css               |  7663 ++
 template/WinJS/fonts/Symbols.ttf              |   Bin 0 -> 47488 bytes
 template/WinJS/js/WinJS.intellisense-setup.js |    30 +
 template/WinJS/js/WinJS.intellisense.js       |   195 +
 template/WinJS/js/WinJS.js                    | 80988 +++++++++++++++++++
 template/WinJS/js/en-US/ui.strings.js         |   476 +
 template/config.xml                           |     3 +-
 template/cordova/lib/ConfigParser.js          |    54 +
 template/cordova/lib/MSBuildTools.js          |    35 +-
 template/cordova/lib/Version.js               |   114 +
 template/cordova/lib/WindowsStoreAppUtils.ps1 |    18 +
 template/cordova/lib/build.js                 |   110 +-
 template/cordova/lib/package.js               |    81 +-
 template/cordova/lib/prepare.js               |   418 +-
 template/cordova/lib/run.js                   |   101 +-
 template/cordova/lib/utils.js                 |    25 +-
 template/images/Square44x44Logo.scale-100.png |   Bin 0 -> 2947 bytes
 template/images/Square71x71Logo.scale-100.png |   Bin 0 -> 6383 bytes
 template/package.windows10.appxmanifest       |    73 +
 template/www/cordova.js                       |     5 +-
 template/www/js/index.js                      |     2 +-
 36 files changed, 98841 insertions(+), 125 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/0d2387d9/.jshintignore
----------------------------------------------------------------------
diff --git a/.jshintignore b/.jshintignore
index 31c0a5a..126ec0f 100644
--- a/.jshintignore
+++ b/.jshintignore
@@ -1 +1,2 @@
 template/www/*
+template/WinJS/*
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/0d2387d9/NOTICE
----------------------------------------------------------------------
diff --git a/NOTICE b/NOTICE
index c38e7d7..2f3db22 100644
--- a/NOTICE
+++ b/NOTICE
@@ -2,4 +2,14 @@ Apache Cordova
 Copyright 2012 The Apache Software Foundation
 
 This product includes software developed by
-The Apache Software Foundation (http://www.apache.org)
\ No newline at end of file
+The Apache Software Foundation (http://www.apache.org)
+
+
+------------------------------------------------------- 
+* WinJS * 
+ 
+http://github.com/winjs/winjs
+ 
+The MIT License 
+http://www.opensource.org/licenses/mit-license.php 
+Copyright (c) 2015 Microsoft Corporation

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/0d2387d9/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index dfc1d0f..0fa2095 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,10 @@ Apache Cordova for Windows
 
 [![Build status](https://ci.appveyor.com/api/projects/status/19h1fq0lyvwtei05/branch/master)](https://ci.appveyor.com/project/Humbedooh/cordova-windows/branch/master)
 
-Includes Windows universal app template to build [Apache Cordova](http://cordova.apache.org) applications that target Windows 8.0, Windows 8.1 and Windows Phone 8.1. An Apache Cordova based applications is, at the core, an application written with web technology: HTML, CSS and JavaScript.
+# Experimental branch for Windows 10 #
+**You are using an experimental branch** which includes support for Windows 10 Universal Apps.  For more information about what's new with Windows 10 support, see [What's New in Windows 10 for Cordova](cordova-windows10.md).
+
+Also includes a universal app template to build [Apache Cordova](http://cordova.apache.org) applications that target Windows 8.0, Windows 8.1 and Windows Phone 8.1. An Apache Cordova based applications is, at the core, an application written with web technology: HTML, CSS and JavaScript.
 
 [Apache Cordova](http://cordova.apache.org) is a project of [The Apache Software Foundation (ASF)](http://apache.org)
 
@@ -32,7 +35,11 @@ Requires
 ---
 **To build for Windows 10** Platform support is experimental
 
-**To build for all platforms** (Windows 8.0, Windows 8.1 and Windows Phone 8.1)
+**To build for Windows 10** (Windows 10, Windows 8.1, and Windows Phone 8.1)
+
+  Windows 8.1 or Windows 10, along with [Visual Studio 2015 RC](http://www.visualstudio.com/downloads)
+
+**To build for Windows 8 or Windows 8.1** (Windows 8.0, Windows 8.1 and Windows Phone 8.1)
 
   Windows 8.1 along with [Visual Studio 2013 Express](http://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-windows-8).
 

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/0d2387d9/RELEASENOTES.md
----------------------------------------------------------------------
diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index 0c956b8..d638838 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -24,7 +24,20 @@ Update these notes using: git log --pretty=format:'* %s' --topo-order --no-merge
 
 cordova-windows is a library that enables developers to create Windows 8/8.1 and WP8.1 application projects that support Cordova APIs.
 
+[4.0.0-dev]
+
+* Added support for Windows 10 Universal Apps. 
+* To target Windows 10, add `<preference name="WindowsTargetVersion" value="10.0" />` to config.xml
+
+**Known Issues with 4.0.0-dev and Windows 10**
+
+- Windows 10 Technical Preview 2 does not have a command-line compatible emulator deployment scenario.  To deploy to an emulator, open your solution file in Visual Studio.
+- The Windows SDK included with Visual Studio 2015 RC does not include a tool to deploy to a Windows 10 Phone.  To deploy to a phone, open your solution file in Visual Studio.
+- `-AndContinue` APIs have been deprecated in Windows 10, so plugins may throw an exception if they call such APIs from a Windows 10 app.
+- WinJS is included inline in the package.  In the future, it will be migrated to an NPM dependency, and the dependency will not include any UI-related files.  You should not take a dependency on WinJS UI functionality unless you include it yourself (see [WinJS on Github](http://github.com/winjs/winjs)).
+
 [3.8.1]
+
 * CB-8796 updated package.json version manually
 * CB-8796 updated version file manually
 * Removed verbose strict inequality tests
@@ -35,6 +48,7 @@ cordova-windows is a library that enables developers to create Windows 8/8.1 and
 * Update JS snapshot to version 3.8.1 (via coho)
 
 [3.8.0]
+
 * Update JS snapshot to version 3.8.0 (via coho)
 * CB-7985 windows platform does not build with Visual Studio 14 CTP tools
 * CB-8515 Support DefaultLanguage selection for Windows
@@ -47,9 +61,11 @@ cordova-windows is a library that enables developers to create Windows 8/8.1 and
 * Fixed regex used in getPackageFileInfo().
 
 [3.7.1]
+
 * Updated expired temporary certificate
 
 [3.7.0]
+
 * Update JS snapshot to version 3.7.0 (via coho)
 * CB-7731 catch obvious missing args error
 * CB-7493 Adds `space-in-path` and `unicode in name` tests for CI
@@ -69,6 +85,7 @@ cordova-windows is a library that enables developers to create Windows 8/8.1 and
 * CB-7377 Removes unnecessary rules tracing which is also incorrectly handled by PS
 
 [3.6.4]
+
 * Set VERSION to 3.6.4 (via coho)
 * Update JS snapshot to version 3.6.4 (via coho)
 * CB-7617 partial match support for --target
@@ -76,6 +93,7 @@ cordova-windows is a library that enables developers to create Windows 8/8.1 and
 * bundledDependencies + fixed some whitespace
 
 [3.6.0]
+
 * CB-7377 Removes unnecessary rules tracing which is also incorrectly handled by PS
 * update cordova.js
 * Removed un-needed files, multiple cordova.js files can only cause confusion

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/0d2387d9/VERSION
----------------------------------------------------------------------
diff --git a/VERSION b/VERSION
index 724ee60..d9b058f 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-3.9.0-dev
+4.0.0-dev

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/0d2387d9/bin/lib/create.js
----------------------------------------------------------------------
diff --git a/bin/lib/create.js b/bin/lib/create.js
index e88f72c..8f323d0 100644
--- a/bin/lib/create.js
+++ b/bin/lib/create.js
@@ -74,7 +74,7 @@ module.exports.run = function (argv) {
     }
 
     // replace specific values in manifests' templates
-    ['package.windows.appxmanifest', 'package.windows80.appxmanifest', 'package.phone.appxmanifest'].forEach(function (file) {
+    ['package.windows.appxmanifest', 'package.windows80.appxmanifest', 'package.phone.appxmanifest', 'package.windows10.appxmanifest'].forEach(function (file) {
         var fileToReplace = path.join(projectPath, file);
         shell.sed('-i', /\$guid1\$/g, guid, fileToReplace);
         shell.sed('-i', /\$safeprojectname\$/g, packageName, fileToReplace);

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/0d2387d9/cordova-windows10.md
----------------------------------------------------------------------
diff --git a/cordova-windows10.md b/cordova-windows10.md
new file mode 100644
index 0000000..4c7e1f7
--- /dev/null
+++ b/cordova-windows10.md
@@ -0,0 +1,159 @@
+*This document contains information about an experimental branch of cordova-windows with support for 
+Windows 10 Technical Preview 2 released at the Build conference in April 2015.  Information is subject 
+to change with later revisions of the software.*
+
+# What’s New in Windows 10 for Cordova #
+Windows 10 has a number of new platform features that make it easier to share code across Cordova 
+applications, as well as bringing forward support for hosted web apps.  This document outlines what 
+app developers and plugin developers need to know about Windows 10 when building support for Windows.
+
+## Getting Started with Windows 10 ##
+Adding Windows 10 support to your app is as easy as setting your Windows target platform version to 
+10.0:
+
+    <preference name="WindowsTargetVersion" value="10.0" />
+
+To develop apps for Windows 10, you require:
+
+* Windows 8.1 or Windows 10 Technical Preview 2, 32-bit or 64-bit
+* Visual Studio 2015 RC
+
+### Web Context and Windows Runtime Access ###
+
+In Windows 8 and 8.1, loading your app into the web context (using `ms-appx-web://`) would allow 
+developers freedom of certain kinds of document manipulation (such as inline script) but would 
+prevent Windows Runtime (WinRT) access.  In Windows 10, many of these restrictions have been lifted; 
+web applications have access to WinRT APIs as long as the page’s origin has been whitelisted in the 
+app manifest.
+  
+To prevent malicious scripts injection, developers are encouraged to:
+
+* Whitelist only authorized and protected origins using the allow-navigation tag in config.xml
+* Apply a [Content Security Policy](http://content-security-policy.com/) meta tag to all pages 
+viewed in a Cordova app
+
+These are good practices in all cases.
+
+### Remote Access and Capabilities ###
+
+When the app manifest declares remote URIs or Web Context to have access to WinRT, then the 
+public Windows Store will prevent on-boarding of apps that have the following capabilities 
+declared:
+
+* Enterprise Authentication (`enterpriseAuthentication`)
+* Shared User Certificates (`sharedUserCertificates`)
+* Documents Library (`documentsLibrary`)
+* Music Library (`musicLibrary`)
+* Pictures Library (`picturesLibrary`)
+* Videos Library (`videosLibrary`)
+* Removable Storage (`removableStorage`)
+* Internet client/server (`internetClientClientServer`) - note that `internetClient` is 
+still permitted
+* Private network client/server (`privateNetworkClientServer`)
+
+Each of the library restrictions may be worked around by requesting that the user interact 
+with the file system via a file picker.  This prevents malicious injected code from arbitrarily 
+accessing (for example) the file system.
+
+The network-related restrictions must be worked around by either using an API that doesn't use 
+capability checks or by brokering communication via standard internet communication channels, 
+such as `XMLHttpRequest` or Web Sockets.
+
+The Enterprise Authentication and Shared User Certificates capabilities are specifically 
+targeted at Enterprise scenarios. These capabilities are supported for private/enterprise-enabled 
+App Stores, so if you are building apps which are going to be deployed to an internal deployment 
+mechanism, you can still support these. 
+
+Whenever you build targeting Windows 10, if one of these capabilities is detected in your app 
+manifest, a warning will be displayed.
+
+## Reference ##
+
+### config.xml Preferences ###
+
+#### WindowsTargetVersion, WindowsPhoneTargetVersion ####
+
+    <preference name="WindowsTargetVersion" value="10.0" />
+    <preference name="WindowsPhoneTargetVersion" value="10.0" />
+
+*At least one is required.*
+
+These preferences identify the version of Windows or Windows Phone you would like your app 
+package to target.
+
+**Valid Values**
+
+* 10.0, UAP: Builds for Windows 10 Universal Windows Platform
+* 8.1: Builds for Windows 8.1 or Windows Phone 8.1 (the default)
+* 8.0: Build for Windows 8.0. Not valid for Windows Phone (use the wp8 Cordova platform 
+instead)
+
+**Scenarios**
+
+If you are targeting Windows 8.1 or Windows 10 only, you only need to have a single 
+`WindowsTargetVersion` setting in your config.xml file.  Explicitly setting 
+`WindowsTargetVersion` to specify Windows 10 will push the Phone setting to 10 as well.
+
+#### WindowsDefaultUriPrefix ####
+    <preference name="WindowsDefaultUriPrefix" value="ms-appx://|ms-appx-web://" />
+
+This preference identifies whether you want your app to target the local context or web 
+context as its startup URI. When building for Windows 10, the default is the web context 
+(`ms-appx-web://`).
+
+In order to have a local-context application that is not impacted by web-context capability 
+restrictions, you must set this preference to `ms-appx://` and not declare any 
+`<allow-navigation>` elements with remote URIs.
+
+**Valid Values**
+
+* `ms-appx://` (Default for Windows 8, 8.1): The start page runs in the local context
+* `ms-appx-web://` (Default for Windows 10): The start page runs in the web context
+
+#### {SDK}-MinVersion, {SDK}-MaxVersionTested ####
+*Optional*
+
+    <preference name="Windows.Universal-MinVersion" value="10.0.0.0" />
+    <preference name="Windows.Mobile-MinVersion" value="10.0.9927.0" />
+    <preference name="Windows.Mobile-MaxVersionTested" value="10.0.10031.0" />
+    <preference name="Microsoft.Northwind-MinVersion" value="10.0.11.0" />
+
+These preferences identify which ecosystems or required Extension SDKs (including but not 
+limited to Windows Universal, Windows Mobile, or Xbox) and the min/max versions they are 
+compatible with. They still require that the platforms have support for the Universal 
+Windows Platform (with Windows 10 as the base OS). However, these may indicate that the 
+application is aware of particular functionality that may only be available on certain 
+devices.
+
+**Valid Values**
+
+There are three parts to each value: the **SDK**, the **version restriction**, and the 
+**version value**. These preferences are detected by beginning with `Windows` or 
+`Microsoft` and ending in `-MinVersion` or `-MaxVersionTested`:
+
+* The **SDK** defines what platform or Extension SDK you want to target. The default is 
+`Windows.Universal`. Valid values for these are defined in the AppxManifest schema, 
+in thePackage/Dependencies/TargetPlatform elements.
+* The **version restriction** defines application compatibility rules. For example, if the 
+`-MinVersion` is set to `10.1.0.0`, then OS versions which don't support at least 10.1.0.0 
+of the corresponding SDK won't be able to load it.
+ * `-MinVersion` specifies the minimum version of the SDK required
+ * `-MaxVersionTested` specifies the highest-tested version of the SDK. If a new version of 
+ the corresponding SDK is released, it will run in compatibility mode for the specified version.
+* The **version value** is a 4-integer tuple in the form of *major.minor.build.qfe*.
+
+If no preferences of these types are specified in your config.xml file, then 
+`Windows.Universal` version 10.0.0.0 will be chosen by default.
+
+### The allow-navigation Element ###
+    <allow-navigation href="http://www.contoso.com/" />
+
+This preference identifies origins which will have access to Windows APIs.  Effectively, this 
+means that origins which are whitelisted with allow-navigation elements can be top-level 
+navigation targets, and will have full access to Cordova plugins that target Windows.
+
+This aligns with the behavior of the `allow-navigation` element in 
+[cordova-plugin-whitelist](https://github.com/apache/cordova-plugin-whitelist), but is built 
+into the platform.  Both the top-level page, as well as webviews, will have access based on 
+the origin of the URI.  It is recommended that, when using this element, that any pages loaded 
+into the frame have a Content Security Policy applied.

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/0d2387d9/spec/unit/Prepare.Win10.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/Prepare.Win10.spec.js b/spec/unit/Prepare.Win10.spec.js
new file mode 100644
index 0000000..d686586
--- /dev/null
+++ b/spec/unit/Prepare.Win10.spec.js
@@ -0,0 +1,398 @@
+/**
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+*/
+
+var rewire  = require('rewire'),
+    prepare = rewire('../../template/cordova/lib/prepare'),
+    Version = require('../../template/cordova/lib/Version'),
+    et      = require('elementtree'),
+    fs      = require('fs'),
+    getAllMinMaxUAPVersions         = prepare.__get__('getAllMinMaxUAPVersions'),
+    applyCoreProperties             = prepare.__get__('applyCoreProperties'),
+    applyAccessRules                = prepare.__get__('applyAccessRules'),
+    checkForRestrictedCaps          = prepare.__get__('checkForRestrictedCapabilities'),
+    ensureUapPrefixedCapabilities   = prepare.__get__('ensureUapPrefixedCapabilities');
+
+var Win10ManifestPath = 'template/package.windows10.appxmanifest',
+    Win81ManifestPath = 'template/package.windows.appxmanifest';
+
+/***
+  * Unit tests for validating that min/max versions are correctly obtained 
+  * (for the function getAllMinMaxUAPVersions) from prepare.js.
+  **/
+describe('Min/Max UAP versions are correctly read from the config file.', function() {
+
+    var mockConfig = {
+        getMatchingPreferences: function(regexp) {
+            return [
+                { name: 'Windows.Universal-MinVersion', value: '10.0.9910.0' },
+                { name: 'Windows.Universal-MaxVersionTested', value: '10.0.9917.0' },
+                { name: 'Windows.Desktop-MinVersion', value: '10.0.9910.0' },
+                { name: 'Microsoft.Xbox-MaxVersionTested', value: '10.0.9917.0' }
+            ];
+        }
+    };
+
+    it('Should correctly transform all versions as a baseline.', function() {
+        var versionSet = getAllMinMaxUAPVersions(mockConfig);
+        var ver9910 = new Version(10, 0, 9910, 0);
+        var ver9917 = new Version(10, 0, 9917, 0);
+
+        expect(versionSet['Windows.Universal']).toBeDefined();
+        expect(ver9910.eq(versionSet['Windows.Universal'].MinVersion)).toBe(true);
+        expect(ver9917.eq(versionSet['Windows.Universal'].MaxVersionTested)).toBe(true);
+
+        expect(versionSet['Windows.Desktop']).toBeDefined();
+        expect(ver9910.eq(versionSet['Windows.Desktop'].MinVersion)).toBe(true);
+        expect(ver9910.eq(versionSet['Windows.Desktop'].MaxVersionTested)).toBe(true);
+
+        expect(versionSet['Microsoft.Xbox']).toBeDefined();
+        expect(ver9917.eq(versionSet['Microsoft.Xbox'].MinVersion)).toBe(true);
+        expect(ver9917.eq(versionSet['Microsoft.Xbox'].MaxVersionTested)).toBe(true);
+
+        expect(Object.keys(versionSet).length).toBe(3);
+    });
+
+});
+
+describe('Min/Max UAP versions are produced correctly even when the config file has no settings.', function() {
+    var mockConfig = {
+        getMatchingPreferences: function(regexp) {
+            return [];
+        }
+    };
+
+    it('Should correctly transform all versions as a baseline.', function() {
+        var versionSet = getAllMinMaxUAPVersions(mockConfig);
+        var verBaseline = prepare.__get__('BASE_UAP_VERSION');
+
+        expect(versionSet['Windows.Universal']).toBeDefined();
+        expect(verBaseline.eq(versionSet['Windows.Universal'].MinVersion)).toBe(true);
+        expect(verBaseline.eq(versionSet['Windows.Universal'].MaxVersionTested)).toBe(true);
+
+        expect(Object.keys(versionSet).length).toBe(1);
+    });
+});
+
+describe('Min/Max UAP versions are correctly read from the config file.', function() {
+
+    var mockConfig = {
+        getMatchingPreferences: function(regexp) {
+            return [
+                { name: 'Windows.Universal-MinVersion', value: '10.0.9910.f' },
+                { name: 'Windows.Universal-MaxVersionTested', value: '10.0.9917.0' },
+            ];
+        }
+    };
+
+    it('Should fail to produce min/max versions with a RangeError.', function() {
+        try {
+            getAllMinMaxUAPVersions(mockConfig);
+            expect(false).toBe(true);
+        }
+        catch (ex) {
+            expect(ex.constructor).toBe(RangeError);
+        }
+    });
+
+});
+
+/***
+  * Unit tests for validating default ms-appx-web:// URI scheme in Win10
+  * (for the function applyCoreProperties) from prepare.js.
+  **/
+function createMockConfigAndManifestForApplyCoreProperties(startPage, windowsDefaultUriPrefix, win10) {
+    var config = {
+        version: function() { return '1.0.0.0'; },
+        name: function() { return 'HelloCordova'; },
+        packageName: function() { return 'org.apache.cordova.HelloCordova'; },
+        author: function() { return 'Apache'; },
+        startPage: function() { return startPage; },
+        getPreference: function(preferenceName) {
+            if (preferenceName === 'WindowsDefaultUriPrefix') {
+                return windowsDefaultUriPrefix;
+            }
+            else if (preferenceName === 'Orientation') {
+                return null;
+            }
+            else {
+                throw new RangeError('Unexpected call to config.getPreference with "' + preferenceName + '" in unit test.');
+            }
+        }
+    };
+
+    var filePath = win10 ? Win10ManifestPath : Win81ManifestPath;
+    var fileContents = fs.readFileSync(filePath, 'utf-8');
+    var manifest = new et.ElementTree(et.XML(fileContents.trim()));
+
+    return { config: config, manifest: manifest };
+}
+
+function addCapabilityDeclarationToMockManifest(manifest, capability) {
+    var capRoot = manifest.find('.//Capabilities');
+    var cap = new et.Element('Capability');
+    cap.attrib.Name = capability;
+    capRoot.append(cap);
+}
+
+describe('A Windows 8.1 project should not have an HTTP or HTTPS scheme for its startup URI.', function() {
+
+    // arrange
+    var mockConfig = createMockConfigAndManifestForApplyCoreProperties('index.html', 'http://', false);
+
+    // act
+    applyCoreProperties(mockConfig.config, mockConfig.manifest, 'fake-path', 'm2:', false);
+
+    var app = mockConfig.manifest.find('.//Application');
+    expect(app.attrib.StartPage).toBe('www/index.html');
+});
+
+describe('A Windows 8.1 project should not have any scheme for its startup URI.', function() {
+
+    // arrange
+    var mockConfig = createMockConfigAndManifestForApplyCoreProperties('index.html', 'ms-appx://', false);
+
+    // act
+    applyCoreProperties(mockConfig.config, mockConfig.manifest, 'fake-path', 'm2:', false);
+
+    var app = mockConfig.manifest.find('.//Application');
+    expect(app.attrib.StartPage).toBe('www/index.html');
+});
+
+describe('A Windows 10 project default to ms-appx-web for its startup URI.', function() {
+
+    // arrange
+    var mockConfig = createMockConfigAndManifestForApplyCoreProperties('index.html', null, true);
+
+    // act
+    applyCoreProperties(mockConfig.config, mockConfig.manifest, 'fake-path', 'uap:', true);
+
+    var app = mockConfig.manifest.find('.//Application');
+    expect(app.attrib.StartPage).toBe('ms-appx-web:///www/index.html');
+});
+
+describe('A Windows 10 project should allow ms-appx as its startup URI, and it gets removed from the final output.', function() {
+
+    // arrange
+    var mockConfig = createMockConfigAndManifestForApplyCoreProperties('index.html', 'ms-appx://', true);
+
+    // act
+    applyCoreProperties(mockConfig.config, mockConfig.manifest, 'fake-path', 'uap:', true);
+
+    var app = mockConfig.manifest.find('.//Application');
+    expect(app.attrib.StartPage).toBe('www/index.html');
+});
+
+describe('A Windows 10 project should allow an HTTP or HTTPS scheme for its startup URI.', function() {
+
+    // arrange
+    var mockConfig = createMockConfigAndManifestForApplyCoreProperties('www.contoso.com/', 'http://', true);
+
+    // act
+    applyCoreProperties(mockConfig.config, mockConfig.manifest, 'fake-path', 'uap:', true);
+
+    var app = mockConfig.manifest.find('.//Application');
+    expect(app.attrib.StartPage).toBe('http://www.contoso.com/');
+});
+
+describe('A Windows 10 project should warn if it supports remote mode and restricted capabilities.', function() {
+
+    // arrange
+    var mockConfig = createMockConfigAndManifestForApplyAccessRules(true, 'http://www.bing.com/*');
+    addCapabilityDeclarationToMockManifest(mockConfig.manifest, 'documentsLibrary');
+
+    var stringFound     = false,
+        searchStr       = '   documentsLibrary',
+        oldConsoleWarn  = console.warn;
+
+    beforeEach(function() {
+        stringFound = false;
+        spyOn(console, 'warn').andCallFake(function(msg) {
+            if (msg === searchStr)
+                stringFound = true;
+        });
+    });
+    afterEach(function() {
+        console.warn = oldConsoleWarn;
+    });
+
+    
+    it('asserts that the documentsLibrary capability is restricted', function() {
+        // act
+        checkForRestrictedCaps(mockConfig.config, mockConfig.manifest);
+
+        // assert
+        expect(stringFound).toBe(true);
+    });
+});
+
+/***
+  * Unit tests for validating that access rules get correctly applied
+  * (for the function applyAccessRules) from prepare.js.
+  **/
+
+function createMockConfigAndManifestForApplyAccessRules(isWin10) {
+    var rules = [];
+    for (var i = 1; i < arguments.length; i++) {
+        rules.push(arguments[i]);
+    }
+
+    var config = {
+        version: function() { return '1.0.0.0'; },
+        name: function() { return 'HelloCordova'; },
+        packageName: function() { return 'org.apache.cordova.HelloCordova'; },
+        author: function() { return 'Apache'; },
+        startPage: function() { return 'index.html'; },
+        getPreference: function(preferenceName) {
+            if (preferenceName === 'WindowsDefaultUriPrefix') {
+                return isWin10 ? 'ms-appx-web://' : 'ms-appx://';
+            }
+            else {
+                throw new RangeError('Unexpected call to config.getPreference in unit test.');
+            }
+        }, 
+        getAccessRules: function() {
+            if (isWin10) {
+                return [];
+            }
+
+            return rules;
+        },
+        getNavigationWhitelistRules: function() {
+            if (isWin10) {
+                return rules;
+            }
+
+            return [];
+        }
+    };
+
+    var filePath = isWin10 ? Win10ManifestPath : Win81ManifestPath;
+    var fileContents = fs.readFileSync(filePath, 'utf-8');
+    var manifest = new et.ElementTree(et.XML(fileContents.trim()));
+
+    return { config: config, manifest: manifest };
+}
+
+describe('A Windows 8.1 project should not have WindowsRuntimeAccess attributes in access rules.', function() {
+
+    var mockConfig = createMockConfigAndManifestForApplyAccessRules(false, 'https://www.contoso.com');
+
+    applyAccessRules(mockConfig.config, mockConfig.manifest, false);
+
+    var app         = mockConfig.manifest.find('.//Application'),
+        accessRules = app.find('.//ApplicationContentUriRules');
+
+    expect(accessRules).toBeDefined();
+    expect(accessRules.len()).toBe(1);
+
+    var rule = accessRules.getItem(0);
+    expect(rule).toBeDefined();
+    expect(rule.attrib.WindowsRuntimeAccess).toBeUndefined();
+
+});
+
+describe('A Windows 10 project should have WindowsRuntimeAccess attributes in access rules.', function() {
+
+    var mockConfig = createMockConfigAndManifestForApplyAccessRules(true, 'https://www.contoso.com');
+
+    applyAccessRules(mockConfig.config, mockConfig.manifest, true);
+
+    var app         = mockConfig.manifest.find('.//Application'),
+        accessRules = app.find('.//uap:ApplicationContentUriRules');
+
+    expect(accessRules).toBeDefined();
+    expect(accessRules.len()).toBe(2);
+
+    var rule = accessRules.getItem(0);
+    expect(rule).toBeDefined();
+    expect(rule.attrib.WindowsRuntimeAccess).toBeDefined();
+    expect(rule.attrib.WindowsRuntimeAccess).toBe('all');
+
+});
+
+describe('A Windows 8.1 project should reject http:// URI scheme rules.', function() {
+    
+    var stringIndex     = -1,
+        searchStr       = 'Access rules must begin with "https://", the following rule will be ignored: ',
+        oldConsoleWarn  = console.warn;
+    beforeEach(function() {
+        spyOn(console, 'warn').andCallFake(function(msg) {
+            stringIndex = msg.indexOf(searchStr);
+        });
+    });
+    afterEach(function() {
+        console.warn = oldConsoleWarn;
+    });
+    
+    it('applies access rules and verifies at least one was rejected', function() {
+        var mockConfig = createMockConfigAndManifestForApplyAccessRules(false, 'http://www.contoso.com');
+        applyAccessRules(mockConfig.config, mockConfig.manifest, false);
+
+        expect(stringIndex).toBe(0);
+    });
+});
+
+describe('A Windows 10 project should accept http:// URI access rules.', function() {
+
+    var stringIndex     = -1,
+        searchStr       = 'The following navigation rule had an invalid URI scheme and is ignored:',
+        oldConsoleWarn  = console.warn;
+    beforeEach(function() {
+        spyOn(console, 'warn').andCallFake(function(msg) {
+            stringIndex = msg.indexOf(searchStr);
+        });
+    });
+    afterEach(function() {
+        console.warn = oldConsoleWarn;
+    });
+
+    it('applies access rules and verifies they were accepted', function() {
+        var mockConfig = createMockConfigAndManifestForApplyAccessRules(true, 'http://www.contoso.com');
+        applyAccessRules(mockConfig.config, mockConfig.manifest, true);
+
+        expect(stringIndex).toBe(-1);
+    });
+
+});
+
+describe('A Windows 10 project should apply the uap: namespace prefix to certain capabilities.', function() {
+    
+    var element = null;
+
+    beforeEach(function() {
+        element = new et.Element('Capabilities');
+        element.append(new et.Element('Capability', { Name: 'internetClient' }));
+        element.append(new et.Element('Capability', { Name: 'documentsLibrary' }));
+        element.append(new et.Element('DeviceCapability', { Name: 'location' }));
+    });
+
+    it('Applies the uap: prefix to the documentsLibrary capability.', function() {
+        ensureUapPrefixedCapabilities(element);
+        var children = element.getchildren();
+        var testResults = {};
+        // map capabilities to tag
+        children.forEach(function(child) {
+            testResults[child.attrib.Name] = child.tag;
+        });
+
+        expect(testResults.internetClient).toBe('Capability');
+        expect(testResults.documentsLibrary).toBe('uap:Capability');
+        expect(testResults.location).toBe('DeviceCapability');
+    });
+});

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/0d2387d9/spec/unit/Version.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/Version.spec.js b/spec/unit/Version.spec.js
new file mode 100644
index 0000000..5f1e29f
--- /dev/null
+++ b/spec/unit/Version.spec.js
@@ -0,0 +1,145 @@
+/**
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+*/
+
+var Version = require('../../template/cordova/lib/Version.js');
+
+describe('Version constructors behave correctly.', function() {
+
+    var v1 = new Version(1);
+    expect(v1.major).toBe(1);
+    expect(v1.minor).toBe(0);
+    expect(v1.build).toBe(0);
+    expect(v1.qfe).toBe(0);
+    var v2 = new Version(1, 2);
+    expect(v2.major).toBe(1);
+    expect(v2.minor).toBe(2);
+    expect(v2.build).toBe(0);
+    expect(v2.qfe).toBe(0);
+    var v3 = new Version(1, 2, 4);
+    expect(v3.major).toBe(1);
+    expect(v3.minor).toBe(2);
+    expect(v3.build).toBe(4);
+    expect(v3.qfe).toBe(0);
+    var v4 = new Version(1, 2, 4, 7);
+    expect(v4.major).toBe(1);
+    expect(v4.minor).toBe(2);
+    expect(v4.build).toBe(4);
+    expect(v4.qfe).toBe(7);
+
+});
+
+describe('Version parse functions work as expected.', function() {
+
+    var version = Version.fromString('1.2.4.7');
+    expect(version.major).toBe(1);
+    expect(version.minor).toBe(2);
+    expect(version.build).toBe(4);
+    expect(version.qfe).toBe(7);
+
+    it('should produce an error as the version string is invalid', function() {
+        try {
+            Version.fromString('This is invalid.');
+
+            expect(false).toBe(true);
+        }
+        catch (ex) {
+            expect(ex.constructor).toBe(RangeError);
+        }
+    });
+
+    it('should produce an error as the string is incomplete.', function() {
+        try {
+            Version.fromString('1.5.3');
+
+            expect(false).toBe(true);
+        }
+        catch (ex) {
+            expect(ex.constructor).toBe(RangeError);
+        }
+    });
+
+    it('should produce an error as the string is too long.', function() {
+        try {
+            Version.fromString('1.5.3.2.7');
+
+            expect(false).toBe(true);
+        }
+        catch (ex) {
+            expect(ex.constructor).toBe(RangeError);
+        }
+    });
+
+    expect(Version.tryParse('This is invalid')).toBe(false);
+
+});
+
+describe('Version equality functions work as expected.', function() {
+
+    var v1Base = new Version(1, 1, 2, 3);
+    // equal to v1Base
+    var v1Copy = new Version(1, 1, 2, 3);
+    // greater than v1Base by QFE
+    var gtV1ByQfe = new Version(1, 1, 2, 4);
+    // greater than v1Base by Build
+    var gtV1ByBuild = new Version(1, 1, 3, 3);
+    // greater than v1Base by Minor
+    var gtV1ByMinor = new Version(1, 2, 2, 3);
+    // greater than v1Base by Major
+    var gtV1ByMajor = new Version(2, 1, 2, 3);
+
+    expect(v1Copy.eq(v1Base)).toBe(true);
+    expect(v1Copy.gte(v1Base)).toBe(true);
+    expect(v1Copy.gt(v1Base)).toBe(false);
+
+    expect(gtV1ByQfe.eq(v1Base)).toBe(false);
+    expect(gtV1ByQfe.gte(v1Base)).toBe(true);
+    expect(gtV1ByQfe.gt(v1Base)).toBe(true);
+
+    expect(gtV1ByBuild.eq(v1Base)).toBe(false);
+    expect(gtV1ByBuild.gte(v1Base)).toBe(true);
+    expect(gtV1ByBuild.gt(v1Base)).toBe(true);
+
+    expect(gtV1ByMinor.eq(v1Base)).toBe(false);
+    expect(gtV1ByMinor.gte(v1Base)).toBe(true);
+    expect(gtV1ByMinor.gt(v1Base)).toBe(true);
+
+    expect(gtV1ByMajor.eq(v1Base)).toBe(false);
+    expect(gtV1ByMajor.gte(v1Base)).toBe(true);
+    expect(gtV1ByMajor.gt(v1Base)).toBe(true);
+});
+
+describe('Version equality tests integrate with Array sort and toString() as expected.', function() {
+
+    var v1Base = new Version(1, 1, 2, 3);
+    // equal to v1Base
+    var v1Copy = new Version(1, 1, 2, 3);
+    // greater than v1Base by QFE
+    var gtV1ByQfe = new Version(1, 1, 2, 4);
+    // greater than v1Base by Build
+    var gtV1ByBuild = new Version(1, 1, 3, 3);
+    // greater than v1Base by Minor
+    var gtV1ByMinor = new Version(1, 2, 2, 3);
+    // greater than v1Base by Major
+    var gtV1ByMajor = new Version(2, 1, 2, 3);
+
+    var toTest = [gtV1ByBuild, gtV1ByMajor, v1Copy, gtV1ByMinor, gtV1ByQfe, v1Base];
+    toTest.sort(Version.comparer);
+
+    expect(toTest.join(',')).toBe('1.1.2.3,1.1.2.3,1.1.2.4,1.1.3.3,1.2.2.3,2.1.2.3');
+});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/0d2387d9/spec/unit/build.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/build.spec.js b/spec/unit/build.spec.js
index 37f5d94..1323f6f 100644
--- a/spec/unit/build.spec.js
+++ b/spec/unit/build.spec.js
@@ -44,11 +44,17 @@ function createConfigParserMock(winVersion, phoneVersion) {
         return {
             getPreference: function(prefName) {
                 switch (prefName) {
-                    case 'windows-target-version':
+                    case 'WindowsTargetVersion':
                         return winVersion;
-                    case 'windows-phone-target-version':
+                    case 'WindowsPhoneTargetVersion':
                         return phoneVersion;
                 }
+            },
+            getWindowsTargetVersion: function() {
+                return winVersion;
+            },
+            getWindowsPhoneTargetVersion: function() {
+                return phoneVersion;
             }
         };
     });
@@ -235,6 +241,7 @@ describe('run method', function() {
         build.__set__('utils.isCordovaProject', isCordovaProjectTrue);
         createFindAvailableVersionMock('4.0', testPath, buildSpy);
         build.__set__('prepare.applyPlatformConfig', function() {} );
+        createConfigParserMock('8.0');
 
         build.run([ 'node', buildPath, '--win' ])
         .finally(function() {
@@ -258,7 +265,7 @@ describe('run method', function() {
         });
     });
 
-    it('spec.10 should throw an error if windows-target-version has unsupported value', function(done) {
+    it('spec.10 should throw an error if WindowsTargetVersion has unsupported value', function(done) {
         var buildSpy = jasmine.createSpy(),
             errorSpy = jasmine.createSpy();
 
@@ -294,7 +301,7 @@ describe('run method', function() {
         });
     });
 
-    it('spec.12 should throw an error if windows-phone-target-version has unsupported value', function(done) {
+    it('spec.12 should throw an error if WindowsPhoneTargetVersion has unsupported value', function(done) {
         var buildSpy = jasmine.createSpy(),
             errorSpy = jasmine.createSpy();
 

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/0d2387d9/spec/unit/package.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/package.spec.js b/spec/unit/package.spec.js
index 89478b5..cc7be6f 100644
--- a/spec/unit/package.spec.js
+++ b/spec/unit/package.spec.js
@@ -19,6 +19,7 @@
 var path = require('path'),
     rewire = require('rewire'),
     shell = require('shelljs'),
+    Q = require('q'),
     platformRoot = '../../template',
     pkgRoot = './template/',
     pkgPath = path.join(pkgRoot, 'AppPackages'),
@@ -51,7 +52,7 @@ describe('getPackage method', function() {
             expect(pkgInfo.type).toBe('windows80');
             expect(pkgInfo.buildtype).toBe('debug');
             expect(pkgInfo.arch).toBe('anycpu');
-            expect(pkgInfo.file).toBeDefined();
+            expect(pkgInfo.script).toBeDefined();
         }, rejected)
         .finally(function() {
             expect(rejected).not.toHaveBeenCalled();
@@ -67,7 +68,7 @@ describe('getPackage method', function() {
             expect(pkgInfo.type).toBe('phone');
             expect(pkgInfo.buildtype).toBe('debug');
             expect(pkgInfo.arch).toBe('anycpu');
-            expect(pkgInfo.file).toBeDefined();
+            expect(pkgInfo.script).toBeDefined();
         }, rejected)
         .finally(function() {
             expect(rejected).not.toHaveBeenCalled();
@@ -100,7 +101,7 @@ describe('getPackage method', function() {
     it('spec.5 should not find windows 8.0 x86 debug package', function(done) {
         var resolved = jasmine.createSpy();
 
-        pkg.getPackage('windows', 'debug', 'x86')
+        pkg.getPackage('windows80', 'debug', 'x86')
         .then(resolved)
         .finally(function() {
             expect(resolved).not.toHaveBeenCalled();
@@ -155,7 +156,7 @@ describe('getAppId method', function() {
     it('spec.10 should properly get phoneProductId value from manifest', function(done) {
         var resolve = jasmine.createSpy();
 
-        pkg.getAppId(pkgRoot)
+        Q(pkg.getAppId(pkgRoot))
         .then(resolve)
         .finally(function() {
             expect(resolve).toHaveBeenCalledWith('$guid1$');
@@ -168,7 +169,7 @@ describe('getPackageName method', function() {
     it('spec.11 should properly get Application Id value from manifest', function(done) {
         var resolve = jasmine.createSpy();
 
-        pkg.getAppId(pkgRoot)
+        Q(pkg.getAppId(pkgRoot))
         .then(resolve)
         .finally(function() {
             expect(resolve).toHaveBeenCalledWith('$guid1$');

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/0d2387d9/spec/unit/run.spec.js
----------------------------------------------------------------------
diff --git a/spec/unit/run.spec.js b/spec/unit/run.spec.js
index 94978a3..3a28861 100644
--- a/spec/unit/run.spec.js
+++ b/spec/unit/run.spec.js
@@ -140,7 +140,7 @@ describe('run method', function() {
                 file: 'testfile'
             });
         });
-        run.__set__('packages.deployToPhone', function() {
+        run.__set__('packages.deployToPhoneAndRun', function() {
             deployToPhone();
             return Q();
         });

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/0d2387d9/template/CordovaApp.Windows10.jsproj
----------------------------------------------------------------------
diff --git a/template/CordovaApp.Windows10.jsproj b/template/CordovaApp.Windows10.jsproj
new file mode 100644
index 0000000..1cbdb1f
--- /dev/null
+++ b/template/CordovaApp.Windows10.jsproj
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+-->
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <OutputPath>build\windows\$(Configuration)\$(Platform)\</OutputPath>
+    <IntermediateOutputPath>build\windows\bld\</IntermediateOutputPath>
+    <AppxPackageSigningEnabled>true</AppxPackageSigningEnabled>
+  </PropertyGroup>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|AnyCPU">
+      <Configuration>Debug</Configuration>
+      <Platform>AnyCPU</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x86">
+      <Configuration>Debug</Configuration>
+      <Platform>x86</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|AnyCPU">
+      <Configuration>Release</Configuration>
+      <Platform>AnyCPU</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM">
+      <Configuration>Release</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x86">
+      <Configuration>Release</Configuration>
+      <Platform>x86</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>f9b0ae20-c91c-42b9-9c6e-d3bc28b4509e</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0'">
+    <VisualStudioVersion>14.0</VisualStudioVersion>
+  </PropertyGroup>
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).Default.props" />
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).props" />
+  <PropertyGroup>
+    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
+    <TargetPlatformVersion>10.0.10030.0</TargetPlatformVersion>
+    <TargetPlatformMinVersion>10.0.10030.0</TargetPlatformMinVersion>
+    <MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
+    <DefaultLanguage>en-US</DefaultLanguage>
+    <PackageCertificateKeyFile>CordovaApp_TemporaryKey.pfx</PackageCertificateKeyFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <AppxManifest Include="package.windows10.appxmanifest">
+      <SubType>Designer</SubType>
+    </AppxManifest>
+    <Content Include="images\*.png" Exclude="images\*.scale-240.*" />
+    <Content Include="WinJS\css\ui-dark.css" />
+    <Content Include="WinJS\css\ui-light.css" />
+    <Content Include="WinJS\fonts\Symbols.ttf" />
+    <Content Include="WinJS\js\en-US\ui.strings.js" />
+    <Content Include="WinJS\js\WinJS.js" />
+    <None Include="WinJS\js\WinJS.intellisense.js" />
+    <None Include="WinJS\js\WinJS.intellisense-setup.js" />
+    <None Include="CordovaApp_TemporaryKey.pfx" />
+  </ItemGroup>
+  <Import Project="CordovaApp.projitems" Label="Shared" />
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).targets" />
+  <!-- To modify your build process, add your task inside one of the targets below then uncomment
+       that target and the DisableFastUpToDateCheck PropertyGroup. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  <PropertyGroup>
+    <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
+  </PropertyGroup>
+  -->
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/0d2387d9/template/CordovaApp.sln
----------------------------------------------------------------------
diff --git a/template/CordovaApp.sln b/template/CordovaApp.sln
index 71caade..808a6aa 100644
--- a/template/CordovaApp.sln
+++ b/template/CordovaApp.sln
@@ -1,6 +1,6 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
+# Visual Studio 14
 #
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file
@@ -19,7 +19,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # specific language governing permissions and limitations
 # under the License.
 #
-VisualStudioVersion = 12.0.30324.0
+VisualStudioVersion = 14.0.22803.0
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CordovaApp", "CordovaApp", "{3A47E08D-7EA5-4F3F-AA6D-1D4A41F26944}"
 EndProject
@@ -31,11 +31,14 @@ Project("{262852C6-CD72-467D-83FE-5EEB1973A190}") = "CordovaApp.Windows", "Cordo
 EndProject
 Project("{262852C6-CD72-467D-83FE-5EEB1973A190}") = "CordovaApp.Phone", "CordovaApp.Phone.jsproj", "{31B67A35-9503-4213-857E-F44EB42AE549}"
 EndProject
+Project("{262852C6-CD72-467D-83FE-5EEB1973A190}") = "CordovaApp.Windows10", "CordovaApp.Windows10.jsproj", "{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}"
+EndProject
 Global
 	GlobalSection(SharedMSBuildProjectFiles) = preSolution
 		CordovaApp.projitems*{58950fb6-2f93-4963-b9cd-637f83f3efbf}*SharedItemsImports = 5
 		CordovaApp.projitems*{efffab2f-bfc5-4eda-b545-45ef4995f55a}*SharedItemsImports = 5
 		CordovaApp.projitems*{9ebdb27f-d75b-4d8c-b53f-7be4a1fe89f9}*SharedItemsImports = 13
+		CordovaApp.projitems*{f9b0ae20-c91c-42b9-9c6e-d3bc28b4509e}*SharedItemsImports = 5
 		CordovaApp.projitems*{31b67a35-9503-4213-857e-f44eb42ae549}*SharedItemsImports = 5
 	EndGlobalSection
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -121,6 +124,30 @@ Global
 		{EFFFAB2F-BFC5-4EDA-B545-45EF4995F55A}.Release|x86.ActiveCfg = Release|x86
 		{EFFFAB2F-BFC5-4EDA-B545-45EF4995F55A}.Release|x86.Build.0 = Release|x86
 		{EFFFAB2F-BFC5-4EDA-B545-45EF4995F55A}.Release|x86.Deploy.0 = Release|x86
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Debug|ARM.ActiveCfg = Debug|ARM
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Debug|ARM.Build.0 = Debug|ARM
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Debug|ARM.Deploy.0 = Debug|ARM
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Debug|x64.ActiveCfg = Debug|x64
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Debug|x64.Build.0 = Debug|x64
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Debug|x64.Deploy.0 = Debug|x64
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Debug|x86.ActiveCfg = Debug|x86
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Debug|x86.Build.0 = Debug|x86
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Debug|x86.Deploy.0 = Debug|x86
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Release|Any CPU.Deploy.0 = Release|Any CPU
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Release|ARM.ActiveCfg = Release|ARM
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Release|ARM.Build.0 = Release|ARM
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Release|ARM.Deploy.0 = Release|ARM
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Release|x64.ActiveCfg = Release|x64
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Release|x64.Build.0 = Release|x64
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Release|x64.Deploy.0 = Release|x64
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Release|x86.ActiveCfg = Release|x86
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Release|x86.Build.0 = Release|x86
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E}.Release|x86.Deploy.0 = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -130,5 +157,6 @@ Global
 		{58950FB6-2F93-4963-B9CD-637F83F3EFBF} = {3A47E08D-7EA5-4F3F-AA6D-1D4A41F26944}
 		{31B67A35-9503-4213-857E-F44EB42AE549} = {3A47E08D-7EA5-4F3F-AA6D-1D4A41F26944}
 		{EFFFAB2F-BFC5-4EDA-B545-45EF4995F55A} = {3A47E08D-7EA5-4F3F-AA6D-1D4A41F26944}
+		{F9B0AE20-C91C-42B9-9C6E-D3BC28B4509E} = {3A47E08D-7EA5-4F3F-AA6D-1D4A41F26944}
 	EndGlobalSection
 EndGlobal


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


Mime
View raw message