[
https://issues.apache.org/jira/browse/CB-9283?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14618804#comment-14618804
]
ASF GitHub Bot commented on CB-9283:
------------------------------------
Github user robpaveza commented on a diff in the pull request:
https://github.com/apache/cordova-windows/pull/96#discussion_r34164434
--- Diff: template/cordova/lib/deployment.js ---
@@ -0,0 +1,275 @@
+/*
+ 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 Q = require('q'),
+ fs = require('fs'),
+ /* jshint ignore:start */ // 'path' only used in ignored blocks
+ path = require('path'),
+ /* jshint ignore:end */
+ proc = require('child_process');
+
+// neither 'exec' nor 'spawn' was sufficient because we need to pass
arguments via spawn
+// but also need to be able to capture stdout / stderr
+function run(cmd, args, opt_cwd) {
+ var d = Q.defer();
+ try {
+ var child = proc.spawn(cmd, args, {cwd: opt_cwd, maxBuffer:
1024000});
+ var stdout = '', stderr = '';
+ child.stdout.on('data', function(s) { stdout += s; });
+ child.stderr.on('data', function(s) { stderr += s; });
+ child.on('exit', function(code) {
+ if (code) {
+ d.reject(stderr);
+ } else {
+ d.resolve(stdout);
+ }
+ });
+ } catch(e) {
+ console.error('error caught: ' + e);
+ d.reject(e);
+ }
+ return d.promise;
+}
+
+function DeploymentTool() {
+
+}
+
+/**
+ * Determines whether the requested version of the deployment tool is
available.
+ * @returns True if the deployment tool can function; false if not.
+ */
+DeploymentTool.prototype.isAvailable = function() {
+ return fs.existsSync(this.path);
+};
+
+/**
+ * Enumerates devices attached to the development machine.
+ * @returns A Promise for an array of objects, which should be passed into
other functions to represent the device.
+ * @remarks The returned objects contain 'index', 'name', and 'type'
properties indicating basic information about them,
+ * which is limited to the information provided by the system. Other
properties may also be included, but they are
+ * specific to the deployment tool which created them and are likely
used internally.
+ */
+DeploymentTool.prototype.enumerateDevices = function() {
+ return Q.reject('May not use DeploymentTool directly, instead get an
instance from DeploymentTool.getDeploymentTool()');
+};
+
+/**
+ * Installs an app package to the target device.
+ * @returns A Promise which will be fulfilled on success or rejected on
failure.
+ * @param pathToAppxPackage The path to the .appx package to install.
+ * @param targetDevice An object returned from a successful call to
enumerateDevices.
+ * @shouldLaunch Indicates whether to launch the app after installing it.
+ * @shouldUpdate Indicates whether to explicitly update the app, or
install clean.
+ * @pin Optionally provided if the device requires pairing for deployment.
+ */
+DeploymentTool.prototype.installAppPackage = function(pathToAppxPackage,
targetDevice, shouldLaunch, shouldUpdate, pin) {
+ return Q.reject('May not use DeploymentTool directly, instead get an
instance from DeploymentTool.getDeploymentTool()');
+};
+
+/**
+ * Uninstalls an app package from the target device.
+ * @returns A Promise which will be fulfilled on success or rejected on
failure.
+ * @param packageInfo The app package name or Phone GUID representing the
app.
+ * @param targetDevice An object returned from a successful call to
enumerateDevices.
+ */
+DeploymentTool.prototype.uninstallAppPackage = function(packageInfo,
targetDevice) {
+ return Q.reject('Unable to uninstall any app packages because that
feature is not supported.');
+};
+
+/**
+ * Gets a list of installed apps on the target device. This function is
not supported for
+ * Windows Phone 8.1.
+ * @param targetDevice {Object} An object returned from a successful call
to enumerateDevices.
+ * @returns A Promise for an array of app names.
+ */
+DeploymentTool.prototype.getInstalledApps = function(targetDevice) {
+ return Q.reject('Unable to get installed apps because that feature is
not supported.');
+};
+
+/**
+ * Launches an app on the target device. This function is not supported
for Windows 10.
+ * @param packageInfo {String} The app package name or Phone GUID
representing the app.
+ * @param targetDevice {Object} An object returned from a successful call
to enumerateDevices.
+ * @returns A Promise for when the app is launched.
+ */
+DeploymentTool.prototype.launchApp = function(packageInfo, targetDevice) {
+ return Q.reject('Unable to launch an app because that feature is not
supported.');
+};
+
+/**
+ * Gets a DeploymentTool to deploy to devices or emulators.
+ * @param targetOsVersion {String} The version of the
+ */
+DeploymentTool.getDeploymentTool = function(targetOsVersion) {
+ if (targetOsVersion === '8.1') {
--- End diff --
We use strings extensively throughout the codebase already.
> Windows 10: Migrate to new deployment infrastructure
> ----------------------------------------------------
>
> Key: CB-9283
> URL: https://issues.apache.org/jira/browse/CB-9283
> Project: Apache Cordova
> Issue Type: Improvement
> Components: Windows
> Reporter: Rob Paveza
> Assignee: Rob Paveza
>
> The Windows 10 SDK includes a new deployment tool, WinAppDeployCmd, which
> supercedes Windows Phone 8.1's AppDeployCmd. Its command line interface is
> incompatible. This task is to migrate to WinAppDeployCmd.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]