@react-native-windows/cli 0.0.0-canary.21 → 0.0.0-canary.210
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindows.d.ts +87 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindows.js +661 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindows.js.map +1 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.d.ts +14 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.js +33 -0
- package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.js.map +1 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindows.d.ts +27 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindows.js +206 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindows.js.map +1 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.d.ts +12 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.js +23 -0
- package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.js.map +1 -0
- package/lib-commonjs/{config → commands/config}/configUtils.d.ts +123 -93
- package/lib-commonjs/commands/config/configUtils.js +381 -0
- package/lib-commonjs/commands/config/configUtils.js.map +1 -0
- package/lib-commonjs/{config → commands/config}/dependencyConfig.d.ts +37 -37
- package/lib-commonjs/commands/config/dependencyConfig.js +228 -0
- package/lib-commonjs/commands/config/dependencyConfig.js.map +1 -0
- package/lib-commonjs/{config → commands/config}/projectConfig.d.ts +27 -24
- package/lib-commonjs/{config → commands/config}/projectConfig.js +180 -120
- package/lib-commonjs/commands/config/projectConfig.js.map +1 -0
- package/lib-commonjs/commands/healthCheck/healthCheckList.d.ts +6 -0
- package/lib-commonjs/commands/healthCheck/healthCheckList.js +21 -0
- package/lib-commonjs/commands/healthCheck/healthCheckList.js.map +1 -0
- package/lib-commonjs/commands/healthCheck/healthChecks.d.ts +7 -0
- package/lib-commonjs/commands/healthCheck/healthChecks.js +124 -0
- package/lib-commonjs/commands/healthCheck/healthChecks.js.map +1 -0
- package/lib-commonjs/commands/initWindows/initWindows.d.ts +46 -0
- package/lib-commonjs/commands/initWindows/initWindows.js +244 -0
- package/lib-commonjs/commands/initWindows/initWindows.js.map +1 -0
- package/lib-commonjs/commands/initWindows/initWindowsOptions.d.ts +15 -0
- package/lib-commonjs/commands/initWindows/initWindowsOptions.js +38 -0
- package/lib-commonjs/commands/initWindows/initWindowsOptions.js.map +1 -0
- package/lib-commonjs/{runWindows → commands/runWindows}/runWindows.d.ts +10 -10
- package/lib-commonjs/commands/runWindows/runWindows.js +322 -0
- package/lib-commonjs/commands/runWindows/runWindows.js.map +1 -0
- package/lib-commonjs/{runWindows → commands/runWindows}/runWindowsOptions.d.ts +56 -52
- package/lib-commonjs/{runWindows → commands/runWindows}/runWindowsOptions.js +132 -131
- package/lib-commonjs/commands/runWindows/runWindowsOptions.js.map +1 -0
- package/lib-commonjs/e2etest/autolink.test.d.ts +6 -0
- package/lib-commonjs/e2etest/autolink.test.js +367 -0
- package/lib-commonjs/e2etest/autolink.test.js.map +1 -0
- package/lib-commonjs/e2etest/dependencyConfig.test.d.ts +6 -0
- package/lib-commonjs/e2etest/dependencyConfig.test.js +130 -0
- package/lib-commonjs/e2etest/dependencyConfig.test.js.map +1 -0
- package/lib-commonjs/e2etest/healthChecks.test.d.ts +6 -0
- package/lib-commonjs/e2etest/healthChecks.test.js +31 -0
- package/lib-commonjs/e2etest/healthChecks.test.js.map +1 -0
- package/lib-commonjs/e2etest/initWindows.test.d.ts +6 -0
- package/lib-commonjs/e2etest/initWindows.test.js +43 -0
- package/lib-commonjs/e2etest/initWindows.test.js.map +1 -0
- package/lib-commonjs/e2etest/projectConfig.test.d.ts +6 -0
- package/lib-commonjs/e2etest/projectConfig.test.js +111 -0
- package/lib-commonjs/e2etest/projectConfig.test.js.map +1 -0
- package/lib-commonjs/e2etest/projectConfig.utils.d.ts +8 -0
- package/lib-commonjs/e2etest/projectConfig.utils.js +77 -0
- package/lib-commonjs/e2etest/projectConfig.utils.js.map +1 -0
- package/lib-commonjs/e2etest/runWindows.test.d.ts +6 -0
- package/lib-commonjs/e2etest/runWindows.test.js +61 -0
- package/lib-commonjs/e2etest/runWindows.test.js.map +1 -0
- package/lib-commonjs/e2etest/typesUpToDate.test.d.ts +6 -0
- package/lib-commonjs/e2etest/typesUpToDate.test.js +21 -0
- package/lib-commonjs/e2etest/typesUpToDate.test.js.map +1 -0
- package/lib-commonjs/generator-common/index.d.ts +39 -23
- package/lib-commonjs/generator-common/index.js +242 -221
- package/lib-commonjs/generator-common/index.js.map +1 -1
- package/lib-commonjs/generator-windows/index.d.ts +10 -10
- package/lib-commonjs/generator-windows/index.js +316 -352
- package/lib-commonjs/generator-windows/index.js.map +1 -1
- package/lib-commonjs/index.d.ts +50 -46
- package/lib-commonjs/index.js +77 -39
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/{runWindows/utils → utils}/build.d.ts +12 -13
- package/lib-commonjs/{runWindows/utils → utils}/build.js +84 -91
- package/lib-commonjs/utils/build.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/checkRequirements.d.ts +6 -6
- package/lib-commonjs/{runWindows/utils → utils}/checkRequirements.js +69 -65
- package/lib-commonjs/utils/checkRequirements.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/commandWithProgress.d.ts +21 -13
- package/lib-commonjs/{runWindows/utils → utils}/commandWithProgress.js +149 -113
- package/lib-commonjs/utils/commandWithProgress.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/deploy.d.ts +12 -12
- package/lib-commonjs/utils/deploy.js +354 -0
- package/lib-commonjs/utils/deploy.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/info.d.ts +6 -6
- package/lib-commonjs/{runWindows/utils → utils}/info.js +28 -25
- package/lib-commonjs/utils/info.js.map +1 -0
- package/lib-commonjs/utils/msbuildtools.d.ts +28 -0
- package/lib-commonjs/utils/msbuildtools.js +274 -0
- package/lib-commonjs/utils/msbuildtools.js.map +1 -0
- package/lib-commonjs/utils/pathHelpers.d.ts +9 -0
- package/lib-commonjs/utils/pathHelpers.js +37 -0
- package/lib-commonjs/utils/pathHelpers.js.map +1 -0
- package/lib-commonjs/utils/telemetryHelpers.d.ts +29 -0
- package/lib-commonjs/utils/telemetryHelpers.js +121 -0
- package/lib-commonjs/utils/telemetryHelpers.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/version.d.ts +19 -19
- package/lib-commonjs/{runWindows/utils → utils}/version.js +109 -109
- package/lib-commonjs/utils/version.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/vsInstalls.d.ts +34 -34
- package/lib-commonjs/utils/vsInstalls.js +100 -0
- package/lib-commonjs/utils/vsInstalls.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/vstools.d.ts +16 -15
- package/lib-commonjs/utils/vstools.js +190 -0
- package/lib-commonjs/utils/vstools.js.map +1 -0
- package/lib-commonjs/{runWindows/utils → utils}/winappdeploytool.d.ts +24 -24
- package/lib-commonjs/{runWindows/utils → utils}/winappdeploytool.js +108 -105
- package/lib-commonjs/utils/winappdeploytool.js.map +1 -0
- package/package.json +50 -30
- package/{powershell → src/powershell}/Add-AppDevPackage.ps1 +2 -2
- package/src/powershell/Eval-MsBuildProperties.ps1 +156 -0
- package/{powershell → src/powershell}/WindowsStoreAppUtils.ps1 +10 -0
- package/CHANGELOG.json +0 -317
- package/CHANGELOG.md +0 -159
- package/lib-commonjs/config/configUtils.js +0 -253
- package/lib-commonjs/config/configUtils.js.map +0 -1
- package/lib-commonjs/config/dependencyConfig.js +0 -167
- package/lib-commonjs/config/dependencyConfig.js.map +0 -1
- package/lib-commonjs/config/projectConfig.js.map +0 -1
- package/lib-commonjs/runWindows/runWindows.js +0 -159
- package/lib-commonjs/runWindows/runWindows.js.map +0 -1
- package/lib-commonjs/runWindows/runWindowsOptions.js.map +0 -1
- package/lib-commonjs/runWindows/utils/autolink.d.ts +0 -7
- package/lib-commonjs/runWindows/utils/autolink.js +0 -353
- package/lib-commonjs/runWindows/utils/autolink.js.map +0 -1
- package/lib-commonjs/runWindows/utils/build.js.map +0 -1
- package/lib-commonjs/runWindows/utils/checkRequirements.js.map +0 -1
- package/lib-commonjs/runWindows/utils/commandWithProgress.js.map +0 -1
- package/lib-commonjs/runWindows/utils/deploy.js +0 -247
- package/lib-commonjs/runWindows/utils/deploy.js.map +0 -1
- package/lib-commonjs/runWindows/utils/info.js.map +0 -1
- package/lib-commonjs/runWindows/utils/msbuildtools.d.ts +0 -22
- package/lib-commonjs/runWindows/utils/msbuildtools.js +0 -195
- package/lib-commonjs/runWindows/utils/msbuildtools.js.map +0 -1
- package/lib-commonjs/runWindows/utils/version.js.map +0 -1
- package/lib-commonjs/runWindows/utils/vsInstalls.js +0 -70
- package/lib-commonjs/runWindows/utils/vsInstalls.js.map +0 -1
- package/lib-commonjs/runWindows/utils/vstools.js +0 -150
- package/lib-commonjs/runWindows/utils/vstools.js.map +0 -1
- package/lib-commonjs/runWindows/utils/winappdeploytool.js.map +0 -1
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Microsoft Corporation.
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
* @format
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
24
|
+
if (mod && mod.__esModule) return mod;
|
|
25
|
+
var result = {};
|
|
26
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
27
|
+
__setModuleDefault(result, mod);
|
|
28
|
+
return result;
|
|
29
|
+
};
|
|
30
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
31
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
32
|
+
};
|
|
33
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
+
exports.startServerInNewWindow = exports.deployToDesktop = exports.deployToDevice = exports.getBuildConfiguration = void 0;
|
|
35
|
+
const child_process_1 = require("child_process");
|
|
36
|
+
const fs_1 = __importDefault(require("@react-native-windows/fs"));
|
|
37
|
+
const http_1 = __importDefault(require("http"));
|
|
38
|
+
const path_1 = __importDefault(require("path"));
|
|
39
|
+
const glob_1 = __importDefault(require("glob"));
|
|
40
|
+
const xml_parser_1 = __importDefault(require("xml-parser"));
|
|
41
|
+
const winappdeploytool_1 = __importDefault(require("./winappdeploytool"));
|
|
42
|
+
const commandWithProgress_1 = require("./commandWithProgress");
|
|
43
|
+
const build = __importStar(require("./build"));
|
|
44
|
+
const configUtils = __importStar(require("../commands/config/configUtils"));
|
|
45
|
+
const telemetry_1 = require("@react-native-windows/telemetry");
|
|
46
|
+
const version_1 = __importDefault(require("./version"));
|
|
47
|
+
function pushd(pathArg) {
|
|
48
|
+
const cwd = process.cwd();
|
|
49
|
+
process.chdir(pathArg);
|
|
50
|
+
return () => process.chdir(cwd);
|
|
51
|
+
}
|
|
52
|
+
function getBuildConfiguration(options) {
|
|
53
|
+
return options.release
|
|
54
|
+
? options.bundle
|
|
55
|
+
? 'ReleaseBundle'
|
|
56
|
+
: 'Release'
|
|
57
|
+
: options.bundle
|
|
58
|
+
? 'DebugBundle'
|
|
59
|
+
: 'Debug';
|
|
60
|
+
}
|
|
61
|
+
exports.getBuildConfiguration = getBuildConfiguration;
|
|
62
|
+
function shouldDeployByPackage(options, config) {
|
|
63
|
+
if (options.deployFromLayout) {
|
|
64
|
+
// Force deploy by layout
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
let hasAppxSigningEnabled = null;
|
|
68
|
+
let hasPackageCertificateKeyFile = null;
|
|
69
|
+
// TODO: These two properties should really be determined by
|
|
70
|
+
// getting the actual values msbuild used during the build,
|
|
71
|
+
// but for now we'll try to get them manually
|
|
72
|
+
// Check passed in msbuild property overrides
|
|
73
|
+
if (options.msbuildprops) {
|
|
74
|
+
const msbuildprops = build.parseMsBuildProps(options);
|
|
75
|
+
if ('AppxSigningEnabled' in msbuildprops) {
|
|
76
|
+
hasAppxSigningEnabled =
|
|
77
|
+
msbuildprops.AppxSigningEnabled.toLowerCase() === 'true';
|
|
78
|
+
}
|
|
79
|
+
if ('PackageCertificateKeyFile' in msbuildprops) {
|
|
80
|
+
hasPackageCertificateKeyFile = true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// If at least one override wasn't set, we need to parse the project file
|
|
84
|
+
if (hasAppxSigningEnabled === null || hasPackageCertificateKeyFile === null) {
|
|
85
|
+
const projectFile = build.getAppProjectFile(options, config);
|
|
86
|
+
if (projectFile) {
|
|
87
|
+
const projectContents = configUtils.readProjectFile(projectFile);
|
|
88
|
+
// Find AppxSigningEnabled
|
|
89
|
+
if (hasAppxSigningEnabled === null) {
|
|
90
|
+
const appxSigningEnabled = configUtils.tryFindPropertyValue(projectContents, 'AppxSigningEnabled');
|
|
91
|
+
if (appxSigningEnabled !== null) {
|
|
92
|
+
hasAppxSigningEnabled = appxSigningEnabled.toLowerCase() === 'true';
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Find PackageCertificateKeyFile
|
|
96
|
+
if (hasPackageCertificateKeyFile === null) {
|
|
97
|
+
const packageCertificateKeyFile = configUtils.tryFindPropertyValue(projectContents, 'PackageCertificateKeyFile');
|
|
98
|
+
if (packageCertificateKeyFile !== null) {
|
|
99
|
+
hasPackageCertificateKeyFile = true;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return (hasAppxSigningEnabled === true && hasPackageCertificateKeyFile === true);
|
|
105
|
+
}
|
|
106
|
+
function shouldLaunchApp(options) {
|
|
107
|
+
return options.launch === true;
|
|
108
|
+
}
|
|
109
|
+
function getAppPackage(options, projectName) {
|
|
110
|
+
const configuration = getBuildConfiguration(options);
|
|
111
|
+
const packageFolder = options.arch === 'x86'
|
|
112
|
+
? `{*_x86_${configuration}_*,*_Win32_${configuration}_*}`
|
|
113
|
+
: `*_${options.arch}_${configuration}_*`;
|
|
114
|
+
const appPackageGlob = `${options.root}/windows/{*/AppPackages,AppPackages/*}/${packageFolder}`;
|
|
115
|
+
const appPackageCandidates = glob_1.default.sync(appPackageGlob);
|
|
116
|
+
let appPackage;
|
|
117
|
+
if (appPackageCandidates.length === 1 || !projectName) {
|
|
118
|
+
appPackage = appPackageCandidates[0];
|
|
119
|
+
}
|
|
120
|
+
else if (appPackageCandidates.length > 1) {
|
|
121
|
+
const filteredAppPackageCandidates = appPackageCandidates.filter(x => x.includes(projectName));
|
|
122
|
+
if (filteredAppPackageCandidates.length >= 1) {
|
|
123
|
+
appPackage = filteredAppPackageCandidates[0];
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (!appPackage && options.release) {
|
|
127
|
+
// in the latest vs, Release is removed
|
|
128
|
+
(0, commandWithProgress_1.newWarn)('No package found in *_Release_* folder, removing the _Release_ prefix and checking again');
|
|
129
|
+
const rootGlob = `${options.root}/windows/{*/AppPackages,AppPackages/*}`;
|
|
130
|
+
const newGlob = `${rootGlob}/*_${options.arch === 'x86' ? '{Win32,x86}' : options.arch}_Test`;
|
|
131
|
+
const result = glob_1.default.sync(newGlob);
|
|
132
|
+
if (result.length > 1 && projectName) {
|
|
133
|
+
const newFilteredGlobs = result.filter(x => x.includes(projectName));
|
|
134
|
+
if (newFilteredGlobs.length >= 1) {
|
|
135
|
+
(0, commandWithProgress_1.newWarn)(`More than one app package found: ${result}`);
|
|
136
|
+
}
|
|
137
|
+
appPackage = newFilteredGlobs[0];
|
|
138
|
+
}
|
|
139
|
+
else if (result.length === 1) {
|
|
140
|
+
// we're good
|
|
141
|
+
appPackage = result[0];
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (!appPackage) {
|
|
145
|
+
throw new telemetry_1.CodedError('NoAppPackage', `Unable to find app package using search path: "${appPackageGlob}"`);
|
|
146
|
+
}
|
|
147
|
+
return appPackage;
|
|
148
|
+
}
|
|
149
|
+
function getWindowsStoreAppUtils(options) {
|
|
150
|
+
const popd = pushd(options.root);
|
|
151
|
+
const windowsStoreAppUtilsPath = path_1.default.resolve(__dirname, '..', '..', 'src', 'powershell', 'WindowsStoreAppUtils.ps1');
|
|
152
|
+
(0, child_process_1.execSync)(`${commandWithProgress_1.powershell} -NoProfile Unblock-File '${windowsStoreAppUtilsPath}'`);
|
|
153
|
+
popd();
|
|
154
|
+
return windowsStoreAppUtilsPath;
|
|
155
|
+
}
|
|
156
|
+
function getAppxManifestPath(options, projectName) {
|
|
157
|
+
const configuration = getBuildConfiguration(options);
|
|
158
|
+
// C++ x86 manifest would go under windows/Debug whereas x64 goes under windows/x64/Debug
|
|
159
|
+
// If we've built both, this causes us to end up with two matches, so we have to carefully select the right folder
|
|
160
|
+
let archFolder;
|
|
161
|
+
if (options.arch !== 'x86') {
|
|
162
|
+
archFolder = `${options.arch}/${configuration}`;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
archFolder = `${configuration}`;
|
|
166
|
+
}
|
|
167
|
+
const appxManifestGlob = `windows/{*/bin/${options.arch}/${configuration},${archFolder}/*,target/${options.arch}/${configuration}}/AppxManifest.xml`;
|
|
168
|
+
const globs = glob_1.default.sync(path_1.default.join(options.root, appxManifestGlob));
|
|
169
|
+
let appxPath;
|
|
170
|
+
if (globs.length === 1 || !projectName) {
|
|
171
|
+
appxPath = globs[0];
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
const filteredGlobs = globs.filter(x => x.includes(projectName));
|
|
175
|
+
appxPath = filteredGlobs[0];
|
|
176
|
+
if (filteredGlobs.length > 1) {
|
|
177
|
+
(0, commandWithProgress_1.newWarn)(`More than one appxmanifest for ${projectName}: ${filteredGlobs.join(',')}`);
|
|
178
|
+
(0, commandWithProgress_1.newWarn)(`Choosing ${appxPath}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
if (!appxPath) {
|
|
182
|
+
throw new telemetry_1.CodedError('NoAppxManifest', `Unable to find AppxManifest from "${options.root}", using search path: "${appxManifestGlob}" `);
|
|
183
|
+
}
|
|
184
|
+
return appxPath;
|
|
185
|
+
}
|
|
186
|
+
function getAppxRecipePath(options, projectName) {
|
|
187
|
+
const appxManifestPath = path_1.default.dirname(getAppxManifestPath(options, projectName));
|
|
188
|
+
const appxRecipeGlob = `*.build.appxrecipe`;
|
|
189
|
+
const globs = glob_1.default.sync(path_1.default.join(appxManifestPath, appxRecipeGlob));
|
|
190
|
+
let appxRecipePath;
|
|
191
|
+
if (globs.length === 1 || !projectName) {
|
|
192
|
+
appxRecipePath = globs[0];
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
const filteredGlobs = globs.filter(x => x.includes(projectName));
|
|
196
|
+
appxRecipePath = filteredGlobs[0];
|
|
197
|
+
if (filteredGlobs.length > 1) {
|
|
198
|
+
(0, commandWithProgress_1.newWarn)(`More than one appxrecipe for ${projectName}: ${filteredGlobs.join(',')}`);
|
|
199
|
+
(0, commandWithProgress_1.newWarn)(`Choosing ${appxRecipePath}`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (!appxRecipePath) {
|
|
203
|
+
throw new telemetry_1.CodedError('DeployRecipeFailure', `Unable to find AppxRecipe from "${appxManifestPath}", using search path: "${appxRecipeGlob}" `);
|
|
204
|
+
}
|
|
205
|
+
return appxRecipePath;
|
|
206
|
+
}
|
|
207
|
+
function parseAppxManifest(appxManifestPath) {
|
|
208
|
+
return (0, xml_parser_1.default)(fs_1.default.readFileSync(appxManifestPath, 'utf8'));
|
|
209
|
+
}
|
|
210
|
+
function getAppxManifest(options, projectName) {
|
|
211
|
+
return parseAppxManifest(getAppxManifestPath(options, projectName));
|
|
212
|
+
}
|
|
213
|
+
function handleResponseError(e) {
|
|
214
|
+
if (e.message.indexOf('Error code -2146233088')) {
|
|
215
|
+
throw new telemetry_1.CodedError('NoDevice', `No Windows Mobile device was detected: ${e.message}`);
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
throw new telemetry_1.CodedError('AppDidNotDeploy', `Unexpected error deploying app: ${e.message}`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// Errors: 0x80073d10 - bad architecture
|
|
222
|
+
async function deployToDevice(options, verbose, config) {
|
|
223
|
+
const windowsConfig = config.project.windows;
|
|
224
|
+
const projectName = windowsConfig && windowsConfig.project && windowsConfig.project.projectName
|
|
225
|
+
? windowsConfig.project.projectName
|
|
226
|
+
: path_1.default.parse(options.proj).name;
|
|
227
|
+
const appPackageFolder = getAppPackage(options);
|
|
228
|
+
const deployTarget = options.target
|
|
229
|
+
? options.target
|
|
230
|
+
: options.emulator
|
|
231
|
+
? 'emulator'
|
|
232
|
+
: 'device';
|
|
233
|
+
const deployTool = new winappdeploytool_1.default();
|
|
234
|
+
const appxManifest = getAppxManifest(options, projectName);
|
|
235
|
+
const shouldLaunch = shouldLaunchApp(options);
|
|
236
|
+
const identity = appxManifest.root.children.filter(x => {
|
|
237
|
+
return x.name === 'mp:PhoneIdentity';
|
|
238
|
+
})[0];
|
|
239
|
+
const appName = identity.attributes.PhoneProductId;
|
|
240
|
+
const device = deployTool.findDevice(deployTarget);
|
|
241
|
+
try {
|
|
242
|
+
await deployTool.uninstallAppPackage(appName, device, verbose);
|
|
243
|
+
}
|
|
244
|
+
catch (e) {
|
|
245
|
+
(0, commandWithProgress_1.newWarn)('Failed to uninstall app from ' + device.name);
|
|
246
|
+
}
|
|
247
|
+
const appxFile = glob_1.default.sync(path_1.default.join(appPackageFolder, '*.appx'))[0];
|
|
248
|
+
try {
|
|
249
|
+
await deployTool.installAppPackage(appxFile, device, shouldLaunch, false, verbose);
|
|
250
|
+
}
|
|
251
|
+
catch (e) {
|
|
252
|
+
if (e.message.includes('Error code 2148734208 for command')) {
|
|
253
|
+
await deployTool.installAppPackage(appxFile, device, shouldLaunch, true, verbose);
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
handleResponseError(e);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
exports.deployToDevice = deployToDevice;
|
|
261
|
+
async function deployToDesktop(options, verbose, config, buildTools) {
|
|
262
|
+
const windowsConfig = config.project.windows;
|
|
263
|
+
const slnFile = windowsConfig && windowsConfig.solutionFile && windowsConfig.sourceDir
|
|
264
|
+
? path_1.default.join(windowsConfig.sourceDir, windowsConfig.solutionFile)
|
|
265
|
+
: options.sln;
|
|
266
|
+
const projectName = windowsConfig && windowsConfig.project && windowsConfig.project.projectName
|
|
267
|
+
? windowsConfig.project.projectName
|
|
268
|
+
: path_1.default.parse(options.proj).name;
|
|
269
|
+
const windowsStoreAppUtils = getWindowsStoreAppUtils(options);
|
|
270
|
+
const appxManifestPath = getAppxManifestPath(options, projectName);
|
|
271
|
+
const appxManifest = parseAppxManifest(appxManifestPath);
|
|
272
|
+
const identity = appxManifest.root.children.filter(x => {
|
|
273
|
+
return x.name === 'Identity';
|
|
274
|
+
})[0];
|
|
275
|
+
const appName = identity.attributes.Name;
|
|
276
|
+
const vsVersion = version_1.default.fromString(buildTools.installationVersion);
|
|
277
|
+
const args = [];
|
|
278
|
+
if (options.remoteDebugging) {
|
|
279
|
+
args.push('--remote-debugging');
|
|
280
|
+
}
|
|
281
|
+
if (options.directDebugging) {
|
|
282
|
+
args.push('--direct-debugging', options.directDebugging.toString());
|
|
283
|
+
}
|
|
284
|
+
await (0, commandWithProgress_1.runPowerShellScriptFunction)('Enabling Developer Mode', windowsStoreAppUtils, 'EnableDevMode', verbose, 'EnableDevModeFailure');
|
|
285
|
+
const appPackageFolder = getAppPackage(options, projectName);
|
|
286
|
+
if (shouldDeployByPackage(options, config)) {
|
|
287
|
+
// Deploy by package
|
|
288
|
+
await (0, commandWithProgress_1.runPowerShellScriptFunction)('Removing old version of the app', windowsStoreAppUtils, `Uninstall-App ${appName}`, verbose, 'RemoveOldAppVersionFailure');
|
|
289
|
+
const script = glob_1.default.sync(path_1.default.join(appPackageFolder, 'Add-AppDevPackage.ps1'))[0];
|
|
290
|
+
await (0, commandWithProgress_1.runPowerShellScriptFunction)('Installing new version of the app', windowsStoreAppUtils, `Install-App "${script}" -Force`, verbose, 'InstallAppFailure');
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
// Deploy from layout
|
|
294
|
+
// If we have DeployAppRecipe.exe, use it (start in 16.8.4, earlier 16.8 versions have bugs)
|
|
295
|
+
const appxRecipe = getAppxRecipePath(options, projectName);
|
|
296
|
+
const ideFolder = `${buildTools.installationPath}\\Common7\\IDE`;
|
|
297
|
+
const deployAppxRecipeExePath = `${ideFolder}\\DeployAppRecipe.exe`;
|
|
298
|
+
if (vsVersion.gte(version_1.default.fromString('16.8.30906.45')) &&
|
|
299
|
+
fs_1.default.existsSync(deployAppxRecipeExePath)) {
|
|
300
|
+
await (0, commandWithProgress_1.commandWithProgress)((0, commandWithProgress_1.newSpinner)('Deploying'), `Deploying ${appxRecipe}`, deployAppxRecipeExePath, [appxRecipe], verbose, 'DeployRecipeFailure');
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
// Install the app package's dependencies before attempting to deploy.
|
|
304
|
+
await (0, commandWithProgress_1.runPowerShellScriptFunction)('Installing dependent framework packages', windowsStoreAppUtils, `Install-AppDependencies ${appxManifestPath} ${appPackageFolder} ${options.arch}`, verbose, 'InstallAppDependenciesFailure');
|
|
305
|
+
await build.buildSolution(buildTools, slnFile,
|
|
306
|
+
/* options.release ? 'Release' : */ 'Debug', options.arch, { DeployLayout: 'true' }, verbose, 'deploy', options.buildLogDirectory);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
const appFamilyName = (0, child_process_1.execSync)(`${commandWithProgress_1.powershell} -NoProfile -c $(Get-AppxPackage -Name ${appName}).PackageFamilyName`)
|
|
310
|
+
.toString()
|
|
311
|
+
.trim();
|
|
312
|
+
if (!appFamilyName) {
|
|
313
|
+
throw new telemetry_1.CodedError('AppDidNotDeploy', 'Fail to check the installed app, maybe developer mode is off on Windows');
|
|
314
|
+
}
|
|
315
|
+
const loopbackText = 'Verifying loopbackExempt';
|
|
316
|
+
const loopbackSpinner = (0, commandWithProgress_1.newSpinner)(loopbackText);
|
|
317
|
+
await (0, commandWithProgress_1.commandWithProgress)(loopbackSpinner, loopbackText, 'CheckNetIsolation', `LoopbackExempt -a -n=${appFamilyName}`.split(' '), verbose, 'CheckNetIsolationFailure');
|
|
318
|
+
if (shouldLaunchApp(options)) {
|
|
319
|
+
await (0, commandWithProgress_1.runPowerShellScriptFunction)('Starting the app', windowsStoreAppUtils, `Start-Locally ${appName} ${args}`, verbose, 'AppStartupFailure');
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
(0, commandWithProgress_1.newInfo)('Skip the step to start the app');
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
exports.deployToDesktop = deployToDesktop;
|
|
326
|
+
function startServerInNewWindow(options, verbose) {
|
|
327
|
+
return new Promise(resolve => {
|
|
328
|
+
http_1.default
|
|
329
|
+
.get('http://localhost:8081/status', res => {
|
|
330
|
+
if (res.statusCode === 200) {
|
|
331
|
+
(0, commandWithProgress_1.newSuccess)('React-Native Server already started');
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
(0, commandWithProgress_1.newError)('React-Native Server not responding');
|
|
335
|
+
}
|
|
336
|
+
resolve();
|
|
337
|
+
})
|
|
338
|
+
.on('error', () => {
|
|
339
|
+
launchServer(options, verbose);
|
|
340
|
+
resolve();
|
|
341
|
+
});
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
exports.startServerInNewWindow = startServerInNewWindow;
|
|
345
|
+
function launchServer(options, verbose) {
|
|
346
|
+
(0, commandWithProgress_1.newSuccess)('Starting the React-Native Server');
|
|
347
|
+
const opts = {
|
|
348
|
+
cwd: options.root,
|
|
349
|
+
detached: true,
|
|
350
|
+
stdio: verbose ? 'inherit' : 'ignore',
|
|
351
|
+
};
|
|
352
|
+
(0, child_process_1.spawn)('cmd.exe', ['/C', 'start npx react-native start'], opts);
|
|
353
|
+
}
|
|
354
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/utils/deploy.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,iDAA4D;AAC5D,kEAA0C;AAC1C,gDAAwB;AACxB,gDAAwB;AACxB,gDAAwB;AACxB,4DAA+B;AAC/B,0EAAkD;AAClD,+DAS+B;AAC/B,+CAAiC;AAOjC,4EAA8D;AAE9D,+DAA2D;AAC3D,wDAAgC;AAEhC,SAAS,KAAK,CAAC,OAAe;IAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,qBAAqB,CAAC,OAA0B;IAC9D,OAAO,OAAO,CAAC,OAAO;QACpB,CAAC,CAAC,OAAO,CAAC,MAAM;YACd,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,SAAS;QACb,CAAC,CAAC,OAAO,CAAC,MAAM;YAChB,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,OAAO,CAAC;AACd,CAAC;AARD,sDAQC;AAED,SAAS,qBAAqB,CAC5B,OAA0B,EAC1B,MAAc;IAEd,IAAI,OAAO,CAAC,gBAAgB,EAAE;QAC5B,yBAAyB;QACzB,OAAO,KAAK,CAAC;KACd;IAED,IAAI,qBAAqB,GAAmB,IAAI,CAAC;IACjD,IAAI,4BAA4B,GAAmB,IAAI,CAAC;IAExD,4DAA4D;IAC5D,2DAA2D;IAC3D,6CAA6C;IAE7C,6CAA6C;IAC7C,IAAI,OAAO,CAAC,YAAY,EAAE;QACxB,MAAM,YAAY,GAAG,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,oBAAoB,IAAI,YAAY,EAAE;YACxC,qBAAqB;gBACnB,YAAY,CAAC,kBAAkB,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;SAC5D;QACD,IAAI,2BAA2B,IAAI,YAAY,EAAE;YAC/C,4BAA4B,GAAG,IAAI,CAAC;SACrC;KACF;IAED,yEAAyE;IACzE,IAAI,qBAAqB,KAAK,IAAI,IAAI,4BAA4B,KAAK,IAAI,EAAE;QAC3E,MAAM,WAAW,GAAG,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7D,IAAI,WAAW,EAAE;YACf,MAAM,eAAe,GAAG,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAEjE,0BAA0B;YAC1B,IAAI,qBAAqB,KAAK,IAAI,EAAE;gBAClC,MAAM,kBAAkB,GAAG,WAAW,CAAC,oBAAoB,CACzD,eAAe,EACf,oBAAoB,CACrB,CAAC;gBACF,IAAI,kBAAkB,KAAK,IAAI,EAAE;oBAC/B,qBAAqB,GAAG,kBAAkB,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;iBACrE;aACF;YAED,iCAAiC;YACjC,IAAI,4BAA4B,KAAK,IAAI,EAAE;gBACzC,MAAM,yBAAyB,GAAG,WAAW,CAAC,oBAAoB,CAChE,eAAe,EACf,2BAA2B,CAC5B,CAAC;gBACF,IAAI,yBAAyB,KAAK,IAAI,EAAE;oBACtC,4BAA4B,GAAG,IAAI,CAAC;iBACrC;aACF;SACF;KACF;IAED,OAAO,CACL,qBAAqB,KAAK,IAAI,IAAI,4BAA4B,KAAK,IAAI,CACxE,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAA0B;IACjD,OAAO,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,aAAa,CACpB,OAA0B,EAC1B,WAAoB;IAEpB,MAAM,aAAa,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,aAAa,GACjB,OAAO,CAAC,IAAI,KAAK,KAAK;QACpB,CAAC,CAAC,UAAU,aAAa,cAAc,aAAa,KAAK;QACzD,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,IAAI,aAAa,IAAI,CAAC;IAE7C,MAAM,cAAc,GAAG,GAAG,OAAO,CAAC,IAAI,0CAA0C,aAAa,EAAE,CAAC;IAChG,MAAM,oBAAoB,GAAG,cAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACvD,IAAI,UAAU,CAAC;IACf,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;QACrD,UAAU,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;KACtC;SAAM,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1C,MAAM,4BAA4B,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACnE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CACxB,CAAC;QACF,IAAI,4BAA4B,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5C,UAAU,GAAG,4BAA4B,CAAC,CAAC,CAAC,CAAC;SAC9C;KACF;IAED,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE;QAClC,uCAAuC;QACvC,IAAA,6BAAO,EACL,0FAA0F,CAC3F,CAAC;QAEF,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,IAAI,wCAAwC,CAAC;QACzE,MAAM,OAAO,GAAG,GAAG,QAAQ,MACzB,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,IACnD,OAAO,CAAC;QAER,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,EAAE;YACpC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;YACrE,IAAI,gBAAgB,CAAC,MAAM,IAAI,CAAC,EAAE;gBAChC,IAAA,6BAAO,EAAC,oCAAoC,MAAM,EAAE,CAAC,CAAC;aACvD;YACD,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;SAClC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,aAAa;YACb,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;SACxB;KACF;IAED,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,IAAI,sBAAU,CAClB,cAAc,EACd,kDAAkD,cAAc,GAAG,CACpE,CAAC;KACH;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,uBAAuB,CAAC,OAA0B;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,wBAAwB,GAAG,cAAI,CAAC,OAAO,CAC3C,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,0BAA0B,CAC3B,CAAC;IACF,IAAA,wBAAQ,EACN,GAAG,gCAAU,6BAA6B,wBAAwB,GAAG,CACtE,CAAC;IACF,IAAI,EAAE,CAAC;IACP,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAA0B,EAC1B,WAAoB;IAEpB,MAAM,aAAa,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACrD,yFAAyF;IACzF,kHAAkH;IAClH,IAAI,UAAU,CAAC;IACf,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE;QAC1B,UAAU,GAAG,GAAG,OAAO,CAAC,IAAI,IAAI,aAAa,EAAE,CAAC;KACjD;SAAM;QACL,UAAU,GAAG,GAAG,aAAa,EAAE,CAAC;KACjC;IAED,MAAM,gBAAgB,GAAG,kBAAkB,OAAO,CAAC,IAAI,IAAI,aAAa,IAAI,UAAU,aAAa,OAAO,CAAC,IAAI,IAAI,aAAa,oBAAoB,CAAC;IACrJ,MAAM,KAAK,GAAG,cAAI,CAAC,IAAI,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACnE,IAAI,QAAgB,CAAC;IACrB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;QACtC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KACrB;SAAM;QACL,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QACjE,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,IAAA,6BAAO,EACL,kCAAkC,WAAW,KAAK,aAAa,CAAC,IAAI,CAClE,GAAG,CACJ,EAAE,CACJ,CAAC;YACF,IAAA,6BAAO,EAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;SACjC;KACF;IAED,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,sBAAU,CAClB,gBAAgB,EAChB,qCAAqC,OAAO,CAAC,IAAI,0BAA0B,gBAAgB,IAAI,CAChG,CAAC;KACH;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,iBAAiB,CACxB,OAA0B,EAC1B,WAAoB;IAEpB,MAAM,gBAAgB,GAAG,cAAI,CAAC,OAAO,CACnC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAC1C,CAAC;IAEF,MAAM,cAAc,GAAG,oBAAoB,CAAC;IAE5C,MAAM,KAAK,GAAG,cAAI,CAAC,IAAI,CAAC,cAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC;IAErE,IAAI,cAAsB,CAAC;IAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;QACtC,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KAC3B;SAAM;QACL,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QACjE,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,IAAA,6BAAO,EACL,gCAAgC,WAAW,KAAK,aAAa,CAAC,IAAI,CAChE,GAAG,CACJ,EAAE,CACJ,CAAC;YACF,IAAA,6BAAO,EAAC,YAAY,cAAc,EAAE,CAAC,CAAC;SACvC;KACF;IAED,IAAI,CAAC,cAAc,EAAE;QACnB,MAAM,IAAI,sBAAU,CAClB,qBAAqB,EACrB,mCAAmC,gBAAgB,0BAA0B,cAAc,IAAI,CAChG,CAAC;KACH;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB,CAAC,gBAAwB;IACjD,OAAO,IAAA,oBAAK,EAAC,YAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,eAAe,CACtB,OAA0B,EAC1B,WAAoB;IAEpB,OAAO,iBAAiB,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAQ;IACnC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE;QAC/C,MAAM,IAAI,sBAAU,CAClB,UAAU,EACV,0CAA0C,CAAC,CAAC,OAAO,EAAE,CACtD,CAAC;KACH;SAAM;QACL,MAAM,IAAI,sBAAU,CAClB,iBAAiB,EACjB,mCAAmC,CAAC,CAAC,OAAO,EAAE,CAC/C,CAAC;KACH;AACH,CAAC;AAED,wCAAwC;AACjC,KAAK,UAAU,cAAc,CAClC,OAA0B,EAC1B,OAAgB,EAChB,MAAc;IAEd,MAAM,aAAa,GACjB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;IACzB,MAAM,WAAW,GACf,aAAa,IAAI,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,WAAW;QACzE,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW;QACnC,CAAC,CAAC,cAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAK,CAAC,CAAC,IAAI,CAAC;IACrC,MAAM,gBAAgB,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM;QACjC,CAAC,CAAC,OAAO,CAAC,MAAM;QAChB,CAAC,CAAC,OAAO,CAAC,QAAQ;YAClB,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,QAAQ,CAAC;IACb,MAAM,UAAU,GAAG,IAAI,0BAAgB,EAAE,CAAC;IAC1C,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACrD,OAAO,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC;IACvC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACN,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC;IAEnD,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAEnD,IAAI;QACF,MAAM,UAAU,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAChE;IAAC,OAAO,CAAC,EAAE;QACV,IAAA,6BAAO,EAAC,+BAA+B,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;KACxD;IAED,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,cAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI;QACF,MAAM,UAAU,CAAC,iBAAiB,CAChC,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,KAAK,EACL,OAAO,CACR,CAAC;KACH;IAAC,OAAO,CAAC,EAAE;QACV,IAAK,CAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAAE;YACtE,MAAM,UAAU,CAAC,iBAAiB,CAChC,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,IAAI,EACJ,OAAO,CACR,CAAC;SACH;aAAM;YACL,mBAAmB,CAAC,CAAU,CAAC,CAAC;SACjC;KACF;AACH,CAAC;AAxDD,wCAwDC;AAEM,KAAK,UAAU,eAAe,CACnC,OAA0B,EAC1B,OAAgB,EAChB,MAAc,EACd,UAAwB;IAExB,MAAM,aAAa,GACjB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;IACzB,MAAM,OAAO,GACX,aAAa,IAAI,aAAa,CAAC,YAAY,IAAI,aAAa,CAAC,SAAS;QACpE,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,YAAY,CAAC;QAChE,CAAC,CAAC,OAAO,CAAC,GAAI,CAAC;IACnB,MAAM,WAAW,GACf,aAAa,IAAI,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,WAAW;QACzE,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW;QACnC,CAAC,CAAC,cAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAK,CAAC,CAAC,IAAI,CAAC;IACrC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACrD,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;IAC/B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACN,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;IAEzC,MAAM,SAAS,GAAG,iBAAO,CAAC,UAAU,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAErE,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,IAAI,OAAO,CAAC,eAAe,EAAE;QAC3B,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;KACjC;IAED,IAAI,OAAO,CAAC,eAAe,EAAE;QAC3B,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;KACrE;IAED,MAAM,IAAA,iDAA2B,EAC/B,yBAAyB,EACzB,oBAAoB,EACpB,eAAe,EACf,OAAO,EACP,sBAAsB,CACvB,CAAC;IAEF,MAAM,gBAAgB,GAAG,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAE7D,IAAI,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;QAC1C,oBAAoB;QACpB,MAAM,IAAA,iDAA2B,EAC/B,iCAAiC,EACjC,oBAAoB,EACpB,iBAAiB,OAAO,EAAE,EAC1B,OAAO,EACP,4BAA4B,CAC7B,CAAC;QAEF,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CACtB,cAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CACrD,CAAC,CAAC,CAAC,CAAC;QAEL,MAAM,IAAA,iDAA2B,EAC/B,mCAAmC,EACnC,oBAAoB,EACpB,gBAAgB,MAAM,UAAU,EAChC,OAAO,EACP,mBAAmB,CACpB,CAAC;KACH;SAAM;QACL,qBAAqB;QACrB,4FAA4F;QAC5F,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,GAAG,UAAU,CAAC,gBAAgB,gBAAgB,CAAC;QACjE,MAAM,uBAAuB,GAAG,GAAG,SAAS,uBAAuB,CAAC;QACpE,IACE,SAAS,CAAC,GAAG,CAAC,iBAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YAClD,YAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,EACtC;YACA,MAAM,IAAA,yCAAmB,EACvB,IAAA,gCAAU,EAAC,WAAW,CAAC,EACvB,aAAa,UAAU,EAAE,EACzB,uBAAuB,EACvB,CAAC,UAAU,CAAC,EACZ,OAAO,EACP,qBAAqB,CACtB,CAAC;SACH;aAAM;YACL,sEAAsE;YACtE,MAAM,IAAA,iDAA2B,EAC/B,yCAAyC,EACzC,oBAAoB,EACpB,2BAA2B,gBAAgB,IAAI,gBAAgB,IAAI,OAAO,CAAC,IAAI,EAAE,EACjF,OAAO,EACP,+BAA+B,CAChC,CAAC;YACF,MAAM,KAAK,CAAC,aAAa,CACvB,UAAU,EACV,OAAO;YACP,mCAAmC,CAAC,OAAO,EAC3C,OAAO,CAAC,IAAI,EACZ,EAAC,YAAY,EAAE,MAAM,EAAC,EACtB,OAAO,EACP,QAAQ,EACR,OAAO,CAAC,iBAAiB,CAC1B,CAAC;SACH;KACF;IAED,MAAM,aAAa,GAAG,IAAA,wBAAQ,EAC5B,GAAG,gCAAU,0CAA0C,OAAO,qBAAqB,CACpF;SACE,QAAQ,EAAE;SACV,IAAI,EAAE,CAAC;IAEV,IAAI,CAAC,aAAa,EAAE;QAClB,MAAM,IAAI,sBAAU,CAClB,iBAAiB,EACjB,yEAAyE,CAC1E,CAAC;KACH;IAED,MAAM,YAAY,GAAG,0BAA0B,CAAC;IAChD,MAAM,eAAe,GAAG,IAAA,gCAAU,EAAC,YAAY,CAAC,CAAC;IAEjD,MAAM,IAAA,yCAAmB,EACvB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAClD,OAAO,EACP,0BAA0B,CAC3B,CAAC;IAEF,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE;QAC5B,MAAM,IAAA,iDAA2B,EAC/B,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,OAAO,IAAI,IAAI,EAAE,EAClC,OAAO,EACP,mBAAmB,CACpB,CAAC;KACH;SAAM;QACL,IAAA,6BAAO,EAAC,gCAAgC,CAAC,CAAC;KAC3C;AACH,CAAC;AA9ID,0CA8IC;AAED,SAAgB,sBAAsB,CACpC,OAA0B,EAC1B,OAAgB;IAEhB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,cAAI;aACD,GAAG,CAAC,8BAA8B,EAAE,GAAG,CAAC,EAAE;YACzC,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;gBAC1B,IAAA,gCAAU,EAAC,qCAAqC,CAAC,CAAC;aACnD;iBAAM;gBACL,IAAA,8BAAQ,EAAC,oCAAoC,CAAC,CAAC;aAChD;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAChB,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC;AAnBD,wDAmBC;AAED,SAAS,YAAY,CAAC,OAA0B,EAAE,OAAgB;IAChE,IAAA,gCAAU,EAAC,kCAAkC,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAiB;QACzB,GAAG,EAAE,OAAO,CAAC,IAAI;QACjB,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;KACtC,CAAC;IAEF,IAAA,qBAAK,EAAC,SAAS,EAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC,EAAE,IAAI,CAAC,CAAC;AACjE,CAAC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport {spawn, execSync, SpawnOptions} from 'child_process';\nimport fs from '@react-native-windows/fs';\nimport http from 'http';\nimport path from 'path';\nimport glob from 'glob';\nimport parse from 'xml-parser';\nimport WinAppDeployTool from './winappdeploytool';\nimport {\n newInfo,\n newSuccess,\n newError,\n newWarn,\n newSpinner,\n commandWithProgress,\n runPowerShellScriptFunction,\n powershell,\n} from './commandWithProgress';\nimport * as build from './build';\nimport {\n BuildConfig,\n RunWindowsOptions,\n} from '../commands/runWindows/runWindowsOptions';\nimport MSBuildTools from './msbuildtools';\nimport {Config} from '@react-native-community/cli-types';\nimport * as configUtils from '../commands/config/configUtils';\nimport {WindowsProjectConfig} from '../commands/config/projectConfig';\nimport {CodedError} from '@react-native-windows/telemetry';\nimport Version from './version';\n\nfunction pushd(pathArg: string): () => void {\n const cwd = process.cwd();\n process.chdir(pathArg);\n return () => process.chdir(cwd);\n}\n\nexport function getBuildConfiguration(options: RunWindowsOptions): BuildConfig {\n return options.release\n ? options.bundle\n ? 'ReleaseBundle'\n : 'Release'\n : options.bundle\n ? 'DebugBundle'\n : 'Debug';\n}\n\nfunction shouldDeployByPackage(\n options: RunWindowsOptions,\n config: Config,\n): boolean {\n if (options.deployFromLayout) {\n // Force deploy by layout\n return false;\n }\n\n let hasAppxSigningEnabled: boolean | null = null;\n let hasPackageCertificateKeyFile: boolean | null = null;\n\n // TODO: These two properties should really be determined by\n // getting the actual values msbuild used during the build,\n // but for now we'll try to get them manually\n\n // Check passed in msbuild property overrides\n if (options.msbuildprops) {\n const msbuildprops = build.parseMsBuildProps(options);\n if ('AppxSigningEnabled' in msbuildprops) {\n hasAppxSigningEnabled =\n msbuildprops.AppxSigningEnabled.toLowerCase() === 'true';\n }\n if ('PackageCertificateKeyFile' in msbuildprops) {\n hasPackageCertificateKeyFile = true;\n }\n }\n\n // If at least one override wasn't set, we need to parse the project file\n if (hasAppxSigningEnabled === null || hasPackageCertificateKeyFile === null) {\n const projectFile = build.getAppProjectFile(options, config);\n if (projectFile) {\n const projectContents = configUtils.readProjectFile(projectFile);\n\n // Find AppxSigningEnabled\n if (hasAppxSigningEnabled === null) {\n const appxSigningEnabled = configUtils.tryFindPropertyValue(\n projectContents,\n 'AppxSigningEnabled',\n );\n if (appxSigningEnabled !== null) {\n hasAppxSigningEnabled = appxSigningEnabled.toLowerCase() === 'true';\n }\n }\n\n // Find PackageCertificateKeyFile\n if (hasPackageCertificateKeyFile === null) {\n const packageCertificateKeyFile = configUtils.tryFindPropertyValue(\n projectContents,\n 'PackageCertificateKeyFile',\n );\n if (packageCertificateKeyFile !== null) {\n hasPackageCertificateKeyFile = true;\n }\n }\n }\n }\n\n return (\n hasAppxSigningEnabled === true && hasPackageCertificateKeyFile === true\n );\n}\n\nfunction shouldLaunchApp(options: RunWindowsOptions): boolean {\n return options.launch === true;\n}\n\nfunction getAppPackage(\n options: RunWindowsOptions,\n projectName?: string,\n): string {\n const configuration = getBuildConfiguration(options);\n const packageFolder =\n options.arch === 'x86'\n ? `{*_x86_${configuration}_*,*_Win32_${configuration}_*}`\n : `*_${options.arch}_${configuration}_*`;\n\n const appPackageGlob = `${options.root}/windows/{*/AppPackages,AppPackages/*}/${packageFolder}`;\n const appPackageCandidates = glob.sync(appPackageGlob);\n let appPackage;\n if (appPackageCandidates.length === 1 || !projectName) {\n appPackage = appPackageCandidates[0];\n } else if (appPackageCandidates.length > 1) {\n const filteredAppPackageCandidates = appPackageCandidates.filter(x =>\n x.includes(projectName),\n );\n if (filteredAppPackageCandidates.length >= 1) {\n appPackage = filteredAppPackageCandidates[0];\n }\n }\n\n if (!appPackage && options.release) {\n // in the latest vs, Release is removed\n newWarn(\n 'No package found in *_Release_* folder, removing the _Release_ prefix and checking again',\n );\n\n const rootGlob = `${options.root}/windows/{*/AppPackages,AppPackages/*}`;\n const newGlob = `${rootGlob}/*_${\n options.arch === 'x86' ? '{Win32,x86}' : options.arch\n }_Test`;\n\n const result = glob.sync(newGlob);\n if (result.length > 1 && projectName) {\n const newFilteredGlobs = result.filter(x => x.includes(projectName));\n if (newFilteredGlobs.length >= 1) {\n newWarn(`More than one app package found: ${result}`);\n }\n appPackage = newFilteredGlobs[0];\n } else if (result.length === 1) {\n // we're good\n appPackage = result[0];\n }\n }\n\n if (!appPackage) {\n throw new CodedError(\n 'NoAppPackage',\n `Unable to find app package using search path: \"${appPackageGlob}\"`,\n );\n }\n return appPackage;\n}\n\nfunction getWindowsStoreAppUtils(options: RunWindowsOptions) {\n const popd = pushd(options.root);\n const windowsStoreAppUtilsPath = path.resolve(\n __dirname,\n '..',\n '..',\n 'src',\n 'powershell',\n 'WindowsStoreAppUtils.ps1',\n );\n execSync(\n `${powershell} -NoProfile Unblock-File '${windowsStoreAppUtilsPath}'`,\n );\n popd();\n return windowsStoreAppUtilsPath;\n}\n\nfunction getAppxManifestPath(\n options: RunWindowsOptions,\n projectName?: string,\n): string {\n const configuration = getBuildConfiguration(options);\n // C++ x86 manifest would go under windows/Debug whereas x64 goes under windows/x64/Debug\n // If we've built both, this causes us to end up with two matches, so we have to carefully select the right folder\n let archFolder;\n if (options.arch !== 'x86') {\n archFolder = `${options.arch}/${configuration}`;\n } else {\n archFolder = `${configuration}`;\n }\n\n const appxManifestGlob = `windows/{*/bin/${options.arch}/${configuration},${archFolder}/*,target/${options.arch}/${configuration}}/AppxManifest.xml`;\n const globs = glob.sync(path.join(options.root, appxManifestGlob));\n let appxPath: string;\n if (globs.length === 1 || !projectName) {\n appxPath = globs[0];\n } else {\n const filteredGlobs = globs.filter(x => x.includes(projectName));\n appxPath = filteredGlobs[0];\n if (filteredGlobs.length > 1) {\n newWarn(\n `More than one appxmanifest for ${projectName}: ${filteredGlobs.join(\n ',',\n )}`,\n );\n newWarn(`Choosing ${appxPath}`);\n }\n }\n\n if (!appxPath) {\n throw new CodedError(\n 'NoAppxManifest',\n `Unable to find AppxManifest from \"${options.root}\", using search path: \"${appxManifestGlob}\" `,\n );\n }\n return appxPath;\n}\n\nfunction getAppxRecipePath(\n options: RunWindowsOptions,\n projectName?: string,\n): string {\n const appxManifestPath = path.dirname(\n getAppxManifestPath(options, projectName),\n );\n\n const appxRecipeGlob = `*.build.appxrecipe`;\n\n const globs = glob.sync(path.join(appxManifestPath, appxRecipeGlob));\n\n let appxRecipePath: string;\n if (globs.length === 1 || !projectName) {\n appxRecipePath = globs[0];\n } else {\n const filteredGlobs = globs.filter(x => x.includes(projectName));\n appxRecipePath = filteredGlobs[0];\n if (filteredGlobs.length > 1) {\n newWarn(\n `More than one appxrecipe for ${projectName}: ${filteredGlobs.join(\n ',',\n )}`,\n );\n newWarn(`Choosing ${appxRecipePath}`);\n }\n }\n\n if (!appxRecipePath) {\n throw new CodedError(\n 'DeployRecipeFailure',\n `Unable to find AppxRecipe from \"${appxManifestPath}\", using search path: \"${appxRecipeGlob}\" `,\n );\n }\n\n return appxRecipePath;\n}\n\nfunction parseAppxManifest(appxManifestPath: string): parse.Document {\n return parse(fs.readFileSync(appxManifestPath, 'utf8'));\n}\n\nfunction getAppxManifest(\n options: RunWindowsOptions,\n projectName?: string,\n): parse.Document {\n return parseAppxManifest(getAppxManifestPath(options, projectName));\n}\n\nfunction handleResponseError(e: Error): never {\n if (e.message.indexOf('Error code -2146233088')) {\n throw new CodedError(\n 'NoDevice',\n `No Windows Mobile device was detected: ${e.message}`,\n );\n } else {\n throw new CodedError(\n 'AppDidNotDeploy',\n `Unexpected error deploying app: ${e.message}`,\n );\n }\n}\n\n// Errors: 0x80073d10 - bad architecture\nexport async function deployToDevice(\n options: RunWindowsOptions,\n verbose: boolean,\n config: Config,\n) {\n const windowsConfig: Partial<WindowsProjectConfig> | undefined =\n config.project.windows;\n const projectName =\n windowsConfig && windowsConfig.project && windowsConfig.project.projectName\n ? windowsConfig.project.projectName\n : path.parse(options.proj!).name;\n const appPackageFolder = getAppPackage(options);\n\n const deployTarget = options.target\n ? options.target\n : options.emulator\n ? 'emulator'\n : 'device';\n const deployTool = new WinAppDeployTool();\n const appxManifest = getAppxManifest(options, projectName);\n const shouldLaunch = shouldLaunchApp(options);\n const identity = appxManifest.root.children.filter(x => {\n return x.name === 'mp:PhoneIdentity';\n })[0];\n const appName = identity.attributes.PhoneProductId;\n\n const device = deployTool.findDevice(deployTarget);\n\n try {\n await deployTool.uninstallAppPackage(appName, device, verbose);\n } catch (e) {\n newWarn('Failed to uninstall app from ' + device.name);\n }\n\n const appxFile = glob.sync(path.join(appPackageFolder, '*.appx'))[0];\n try {\n await deployTool.installAppPackage(\n appxFile,\n device,\n shouldLaunch,\n false,\n verbose,\n );\n } catch (e) {\n if ((e as Error).message.includes('Error code 2148734208 for command')) {\n await deployTool.installAppPackage(\n appxFile,\n device,\n shouldLaunch,\n true,\n verbose,\n );\n } else {\n handleResponseError(e as Error);\n }\n }\n}\n\nexport async function deployToDesktop(\n options: RunWindowsOptions,\n verbose: boolean,\n config: Config,\n buildTools: MSBuildTools,\n) {\n const windowsConfig: Partial<WindowsProjectConfig> | undefined =\n config.project.windows;\n const slnFile =\n windowsConfig && windowsConfig.solutionFile && windowsConfig.sourceDir\n ? path.join(windowsConfig.sourceDir, windowsConfig.solutionFile)\n : options.sln!;\n const projectName =\n windowsConfig && windowsConfig.project && windowsConfig.project.projectName\n ? windowsConfig.project.projectName\n : path.parse(options.proj!).name;\n const windowsStoreAppUtils = getWindowsStoreAppUtils(options);\n const appxManifestPath = getAppxManifestPath(options, projectName);\n const appxManifest = parseAppxManifest(appxManifestPath);\n const identity = appxManifest.root.children.filter(x => {\n return x.name === 'Identity';\n })[0];\n const appName = identity.attributes.Name;\n\n const vsVersion = Version.fromString(buildTools.installationVersion);\n\n const args = [];\n if (options.remoteDebugging) {\n args.push('--remote-debugging');\n }\n\n if (options.directDebugging) {\n args.push('--direct-debugging', options.directDebugging.toString());\n }\n\n await runPowerShellScriptFunction(\n 'Enabling Developer Mode',\n windowsStoreAppUtils,\n 'EnableDevMode',\n verbose,\n 'EnableDevModeFailure',\n );\n\n const appPackageFolder = getAppPackage(options, projectName);\n\n if (shouldDeployByPackage(options, config)) {\n // Deploy by package\n await runPowerShellScriptFunction(\n 'Removing old version of the app',\n windowsStoreAppUtils,\n `Uninstall-App ${appName}`,\n verbose,\n 'RemoveOldAppVersionFailure',\n );\n\n const script = glob.sync(\n path.join(appPackageFolder, 'Add-AppDevPackage.ps1'),\n )[0];\n\n await runPowerShellScriptFunction(\n 'Installing new version of the app',\n windowsStoreAppUtils,\n `Install-App \"${script}\" -Force`,\n verbose,\n 'InstallAppFailure',\n );\n } else {\n // Deploy from layout\n // If we have DeployAppRecipe.exe, use it (start in 16.8.4, earlier 16.8 versions have bugs)\n const appxRecipe = getAppxRecipePath(options, projectName);\n const ideFolder = `${buildTools.installationPath}\\\\Common7\\\\IDE`;\n const deployAppxRecipeExePath = `${ideFolder}\\\\DeployAppRecipe.exe`;\n if (\n vsVersion.gte(Version.fromString('16.8.30906.45')) &&\n fs.existsSync(deployAppxRecipeExePath)\n ) {\n await commandWithProgress(\n newSpinner('Deploying'),\n `Deploying ${appxRecipe}`,\n deployAppxRecipeExePath,\n [appxRecipe],\n verbose,\n 'DeployRecipeFailure',\n );\n } else {\n // Install the app package's dependencies before attempting to deploy.\n await runPowerShellScriptFunction(\n 'Installing dependent framework packages',\n windowsStoreAppUtils,\n `Install-AppDependencies ${appxManifestPath} ${appPackageFolder} ${options.arch}`,\n verbose,\n 'InstallAppDependenciesFailure',\n );\n await build.buildSolution(\n buildTools,\n slnFile,\n /* options.release ? 'Release' : */ 'Debug',\n options.arch,\n {DeployLayout: 'true'},\n verbose,\n 'deploy',\n options.buildLogDirectory,\n );\n }\n }\n\n const appFamilyName = execSync(\n `${powershell} -NoProfile -c $(Get-AppxPackage -Name ${appName}).PackageFamilyName`,\n )\n .toString()\n .trim();\n\n if (!appFamilyName) {\n throw new CodedError(\n 'AppDidNotDeploy',\n 'Fail to check the installed app, maybe developer mode is off on Windows',\n );\n }\n\n const loopbackText = 'Verifying loopbackExempt';\n const loopbackSpinner = newSpinner(loopbackText);\n\n await commandWithProgress(\n loopbackSpinner,\n loopbackText,\n 'CheckNetIsolation',\n `LoopbackExempt -a -n=${appFamilyName}`.split(' '),\n verbose,\n 'CheckNetIsolationFailure',\n );\n\n if (shouldLaunchApp(options)) {\n await runPowerShellScriptFunction(\n 'Starting the app',\n windowsStoreAppUtils,\n `Start-Locally ${appName} ${args}`,\n verbose,\n 'AppStartupFailure',\n );\n } else {\n newInfo('Skip the step to start the app');\n }\n}\n\nexport function startServerInNewWindow(\n options: RunWindowsOptions,\n verbose: boolean,\n): Promise<void> {\n return new Promise(resolve => {\n http\n .get('http://localhost:8081/status', res => {\n if (res.statusCode === 200) {\n newSuccess('React-Native Server already started');\n } else {\n newError('React-Native Server not responding');\n }\n resolve();\n })\n .on('error', () => {\n launchServer(options, verbose);\n resolve();\n });\n });\n}\n\nfunction launchServer(options: RunWindowsOptions, verbose: boolean) {\n newSuccess('Starting the React-Native Server');\n const opts: SpawnOptions = {\n cwd: options.root,\n detached: true,\n stdio: verbose ? 'inherit' : 'ignore',\n };\n\n spawn('cmd.exe', ['/C', 'start npx react-native start'], opts);\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Microsoft Corporation.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
* @format
|
|
5
|
-
*/
|
|
6
|
-
export declare function getEnvironmentInfo(): Promise<string>;
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Microsoft Corporation.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
* @format
|
|
5
|
+
*/
|
|
6
|
+
export declare function getEnvironmentInfo(): Promise<string>;
|
|
@@ -1,26 +1,29 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Copyright (c) Microsoft Corporation.
|
|
4
|
-
* Licensed under the MIT License.
|
|
5
|
-
* @format
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
'
|
|
20
|
-
'react-native
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Microsoft Corporation.
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
* @format
|
|
6
|
+
*/
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.getEnvironmentInfo = void 0;
|
|
12
|
+
// @ts-ignore no typings
|
|
13
|
+
const envinfo_1 = __importDefault(require("envinfo"));
|
|
14
|
+
async function getEnvironmentInfo() {
|
|
15
|
+
return await envinfo_1.default.run({
|
|
16
|
+
System: ['OS', 'CPU', 'Memory', 'Shell'],
|
|
17
|
+
Binaries: ['Node', 'Yarn', 'npm', 'Watchman'],
|
|
18
|
+
npmPackages: [
|
|
19
|
+
'react',
|
|
20
|
+
'react-native',
|
|
21
|
+
'react-native-windows',
|
|
22
|
+
'@react-native-community/cli',
|
|
23
|
+
'react-native-cli',
|
|
24
|
+
],
|
|
25
|
+
npmGlobalPackages: ['*react-native*'],
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
exports.getEnvironmentInfo = getEnvironmentInfo;
|
|
26
29
|
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/utils/info.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,wBAAwB;AACxB,sDAA8B;AAEvB,KAAK,UAAU,kBAAkB;IACtC,OAAO,MAAM,iBAAO,CAAC,GAAG,CAAC;QACvB,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC;QACxC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;QAC7C,WAAW,EAAE;YACX,OAAO;YACP,cAAc;YACd,sBAAsB;YACtB,6BAA6B;YAC7B,kBAAkB;SACnB;QACD,iBAAiB,EAAE,CAAC,gBAAgB,CAAC;KACtC,CAAC,CAAC;AACL,CAAC;AAbD,gDAaC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\n// @ts-ignore no typings\nimport envinfo from 'envinfo';\n\nexport async function getEnvironmentInfo(): Promise<string> {\n return await envinfo.run({\n System: ['OS', 'CPU', 'Memory', 'Shell'],\n Binaries: ['Node', 'Yarn', 'npm', 'Watchman'],\n npmPackages: [\n 'react',\n 'react-native',\n 'react-native-windows',\n '@react-native-community/cli',\n 'react-native-cli',\n ],\n npmGlobalPackages: ['*react-native*'],\n });\n}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Microsoft Corporation.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
* @format
|
|
5
|
+
*/
|
|
6
|
+
import Version from './version';
|
|
7
|
+
import { BuildArch, BuildConfig } from '../commands/runWindows/runWindowsOptions';
|
|
8
|
+
export default class MSBuildTools {
|
|
9
|
+
readonly version: string;
|
|
10
|
+
readonly installationPath: string;
|
|
11
|
+
readonly installationVersion: string;
|
|
12
|
+
/**
|
|
13
|
+
* @param version is something like 17.0 for 2022
|
|
14
|
+
* @param installationPath Path to installation root
|
|
15
|
+
* @param installationVersion is the full version e.g. 17.3.32929.385
|
|
16
|
+
*/
|
|
17
|
+
constructor(version: string, installationPath: string, installationVersion: string);
|
|
18
|
+
/**
|
|
19
|
+
* @returns directory where x64 msbuild can be found
|
|
20
|
+
*/
|
|
21
|
+
msbuildPath(): string;
|
|
22
|
+
cleanProject(slnFile: string): void;
|
|
23
|
+
restorePackageConfigs(slnFile: any, buildArch: BuildArch, buildType: BuildConfig): Promise<void>;
|
|
24
|
+
buildProject(slnFile: string, buildType: BuildConfig, buildArch: BuildArch, msBuildProps: Record<string, string>, verbose: boolean, target: 'build' | 'deploy', buildLogDirectory: string | undefined, singleproc?: boolean): Promise<void>;
|
|
25
|
+
static findAvailableVersion(buildArch: BuildArch, verbose: boolean, prerelease?: boolean): MSBuildTools;
|
|
26
|
+
static getAllAvailableUAPVersions(): Version[];
|
|
27
|
+
evaluateMSBuildProperties(solutionFile: string, projectFile: string, propertyNames?: string[], extraMsBuildProps?: Record<string, string>): Record<string, string>;
|
|
28
|
+
}
|