@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.
Files changed (141) hide show
  1. package/README.md +47 -0
  2. package/lib-commonjs/commands/autolinkWindows/autolinkWindows.d.ts +87 -0
  3. package/lib-commonjs/commands/autolinkWindows/autolinkWindows.js +661 -0
  4. package/lib-commonjs/commands/autolinkWindows/autolinkWindows.js.map +1 -0
  5. package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.d.ts +14 -0
  6. package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.js +33 -0
  7. package/lib-commonjs/commands/autolinkWindows/autolinkWindowsOptions.js.map +1 -0
  8. package/lib-commonjs/commands/codegenWindows/codegenWindows.d.ts +27 -0
  9. package/lib-commonjs/commands/codegenWindows/codegenWindows.js +206 -0
  10. package/lib-commonjs/commands/codegenWindows/codegenWindows.js.map +1 -0
  11. package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.d.ts +12 -0
  12. package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.js +23 -0
  13. package/lib-commonjs/commands/codegenWindows/codegenWindowsOptions.js.map +1 -0
  14. package/lib-commonjs/{config → commands/config}/configUtils.d.ts +123 -93
  15. package/lib-commonjs/commands/config/configUtils.js +381 -0
  16. package/lib-commonjs/commands/config/configUtils.js.map +1 -0
  17. package/lib-commonjs/{config → commands/config}/dependencyConfig.d.ts +37 -37
  18. package/lib-commonjs/commands/config/dependencyConfig.js +228 -0
  19. package/lib-commonjs/commands/config/dependencyConfig.js.map +1 -0
  20. package/lib-commonjs/{config → commands/config}/projectConfig.d.ts +27 -24
  21. package/lib-commonjs/{config → commands/config}/projectConfig.js +180 -120
  22. package/lib-commonjs/commands/config/projectConfig.js.map +1 -0
  23. package/lib-commonjs/commands/healthCheck/healthCheckList.d.ts +6 -0
  24. package/lib-commonjs/commands/healthCheck/healthCheckList.js +21 -0
  25. package/lib-commonjs/commands/healthCheck/healthCheckList.js.map +1 -0
  26. package/lib-commonjs/commands/healthCheck/healthChecks.d.ts +7 -0
  27. package/lib-commonjs/commands/healthCheck/healthChecks.js +124 -0
  28. package/lib-commonjs/commands/healthCheck/healthChecks.js.map +1 -0
  29. package/lib-commonjs/commands/initWindows/initWindows.d.ts +46 -0
  30. package/lib-commonjs/commands/initWindows/initWindows.js +244 -0
  31. package/lib-commonjs/commands/initWindows/initWindows.js.map +1 -0
  32. package/lib-commonjs/commands/initWindows/initWindowsOptions.d.ts +15 -0
  33. package/lib-commonjs/commands/initWindows/initWindowsOptions.js +38 -0
  34. package/lib-commonjs/commands/initWindows/initWindowsOptions.js.map +1 -0
  35. package/lib-commonjs/{runWindows → commands/runWindows}/runWindows.d.ts +10 -10
  36. package/lib-commonjs/commands/runWindows/runWindows.js +322 -0
  37. package/lib-commonjs/commands/runWindows/runWindows.js.map +1 -0
  38. package/lib-commonjs/{runWindows → commands/runWindows}/runWindowsOptions.d.ts +56 -52
  39. package/lib-commonjs/{runWindows → commands/runWindows}/runWindowsOptions.js +132 -131
  40. package/lib-commonjs/commands/runWindows/runWindowsOptions.js.map +1 -0
  41. package/lib-commonjs/e2etest/autolink.test.d.ts +6 -0
  42. package/lib-commonjs/e2etest/autolink.test.js +367 -0
  43. package/lib-commonjs/e2etest/autolink.test.js.map +1 -0
  44. package/lib-commonjs/e2etest/dependencyConfig.test.d.ts +6 -0
  45. package/lib-commonjs/e2etest/dependencyConfig.test.js +130 -0
  46. package/lib-commonjs/e2etest/dependencyConfig.test.js.map +1 -0
  47. package/lib-commonjs/e2etest/healthChecks.test.d.ts +6 -0
  48. package/lib-commonjs/e2etest/healthChecks.test.js +31 -0
  49. package/lib-commonjs/e2etest/healthChecks.test.js.map +1 -0
  50. package/lib-commonjs/e2etest/initWindows.test.d.ts +6 -0
  51. package/lib-commonjs/e2etest/initWindows.test.js +43 -0
  52. package/lib-commonjs/e2etest/initWindows.test.js.map +1 -0
  53. package/lib-commonjs/e2etest/projectConfig.test.d.ts +6 -0
  54. package/lib-commonjs/e2etest/projectConfig.test.js +111 -0
  55. package/lib-commonjs/e2etest/projectConfig.test.js.map +1 -0
  56. package/lib-commonjs/e2etest/projectConfig.utils.d.ts +8 -0
  57. package/lib-commonjs/e2etest/projectConfig.utils.js +77 -0
  58. package/lib-commonjs/e2etest/projectConfig.utils.js.map +1 -0
  59. package/lib-commonjs/e2etest/runWindows.test.d.ts +6 -0
  60. package/lib-commonjs/e2etest/runWindows.test.js +61 -0
  61. package/lib-commonjs/e2etest/runWindows.test.js.map +1 -0
  62. package/lib-commonjs/e2etest/typesUpToDate.test.d.ts +6 -0
  63. package/lib-commonjs/e2etest/typesUpToDate.test.js +21 -0
  64. package/lib-commonjs/e2etest/typesUpToDate.test.js.map +1 -0
  65. package/lib-commonjs/generator-common/index.d.ts +39 -23
  66. package/lib-commonjs/generator-common/index.js +242 -221
  67. package/lib-commonjs/generator-common/index.js.map +1 -1
  68. package/lib-commonjs/generator-windows/index.d.ts +10 -10
  69. package/lib-commonjs/generator-windows/index.js +316 -352
  70. package/lib-commonjs/generator-windows/index.js.map +1 -1
  71. package/lib-commonjs/index.d.ts +50 -46
  72. package/lib-commonjs/index.js +77 -39
  73. package/lib-commonjs/index.js.map +1 -1
  74. package/lib-commonjs/{runWindows/utils → utils}/build.d.ts +12 -13
  75. package/lib-commonjs/{runWindows/utils → utils}/build.js +84 -91
  76. package/lib-commonjs/utils/build.js.map +1 -0
  77. package/lib-commonjs/{runWindows/utils → utils}/checkRequirements.d.ts +6 -6
  78. package/lib-commonjs/{runWindows/utils → utils}/checkRequirements.js +69 -65
  79. package/lib-commonjs/utils/checkRequirements.js.map +1 -0
  80. package/lib-commonjs/{runWindows/utils → utils}/commandWithProgress.d.ts +21 -13
  81. package/lib-commonjs/{runWindows/utils → utils}/commandWithProgress.js +149 -113
  82. package/lib-commonjs/utils/commandWithProgress.js.map +1 -0
  83. package/lib-commonjs/{runWindows/utils → utils}/deploy.d.ts +12 -12
  84. package/lib-commonjs/utils/deploy.js +354 -0
  85. package/lib-commonjs/utils/deploy.js.map +1 -0
  86. package/lib-commonjs/{runWindows/utils → utils}/info.d.ts +6 -6
  87. package/lib-commonjs/{runWindows/utils → utils}/info.js +28 -25
  88. package/lib-commonjs/utils/info.js.map +1 -0
  89. package/lib-commonjs/utils/msbuildtools.d.ts +28 -0
  90. package/lib-commonjs/utils/msbuildtools.js +274 -0
  91. package/lib-commonjs/utils/msbuildtools.js.map +1 -0
  92. package/lib-commonjs/utils/pathHelpers.d.ts +9 -0
  93. package/lib-commonjs/utils/pathHelpers.js +37 -0
  94. package/lib-commonjs/utils/pathHelpers.js.map +1 -0
  95. package/lib-commonjs/utils/telemetryHelpers.d.ts +29 -0
  96. package/lib-commonjs/utils/telemetryHelpers.js +121 -0
  97. package/lib-commonjs/utils/telemetryHelpers.js.map +1 -0
  98. package/lib-commonjs/{runWindows/utils → utils}/version.d.ts +19 -19
  99. package/lib-commonjs/{runWindows/utils → utils}/version.js +109 -109
  100. package/lib-commonjs/utils/version.js.map +1 -0
  101. package/lib-commonjs/{runWindows/utils → utils}/vsInstalls.d.ts +34 -34
  102. package/lib-commonjs/utils/vsInstalls.js +100 -0
  103. package/lib-commonjs/utils/vsInstalls.js.map +1 -0
  104. package/lib-commonjs/{runWindows/utils → utils}/vstools.d.ts +16 -15
  105. package/lib-commonjs/utils/vstools.js +190 -0
  106. package/lib-commonjs/utils/vstools.js.map +1 -0
  107. package/lib-commonjs/{runWindows/utils → utils}/winappdeploytool.d.ts +24 -24
  108. package/lib-commonjs/{runWindows/utils → utils}/winappdeploytool.js +108 -105
  109. package/lib-commonjs/utils/winappdeploytool.js.map +1 -0
  110. package/package.json +50 -30
  111. package/{powershell → src/powershell}/Add-AppDevPackage.ps1 +2 -2
  112. package/src/powershell/Eval-MsBuildProperties.ps1 +156 -0
  113. package/{powershell → src/powershell}/WindowsStoreAppUtils.ps1 +10 -0
  114. package/CHANGELOG.json +0 -317
  115. package/CHANGELOG.md +0 -159
  116. package/lib-commonjs/config/configUtils.js +0 -253
  117. package/lib-commonjs/config/configUtils.js.map +0 -1
  118. package/lib-commonjs/config/dependencyConfig.js +0 -167
  119. package/lib-commonjs/config/dependencyConfig.js.map +0 -1
  120. package/lib-commonjs/config/projectConfig.js.map +0 -1
  121. package/lib-commonjs/runWindows/runWindows.js +0 -159
  122. package/lib-commonjs/runWindows/runWindows.js.map +0 -1
  123. package/lib-commonjs/runWindows/runWindowsOptions.js.map +0 -1
  124. package/lib-commonjs/runWindows/utils/autolink.d.ts +0 -7
  125. package/lib-commonjs/runWindows/utils/autolink.js +0 -353
  126. package/lib-commonjs/runWindows/utils/autolink.js.map +0 -1
  127. package/lib-commonjs/runWindows/utils/build.js.map +0 -1
  128. package/lib-commonjs/runWindows/utils/checkRequirements.js.map +0 -1
  129. package/lib-commonjs/runWindows/utils/commandWithProgress.js.map +0 -1
  130. package/lib-commonjs/runWindows/utils/deploy.js +0 -247
  131. package/lib-commonjs/runWindows/utils/deploy.js.map +0 -1
  132. package/lib-commonjs/runWindows/utils/info.js.map +0 -1
  133. package/lib-commonjs/runWindows/utils/msbuildtools.d.ts +0 -22
  134. package/lib-commonjs/runWindows/utils/msbuildtools.js +0 -195
  135. package/lib-commonjs/runWindows/utils/msbuildtools.js.map +0 -1
  136. package/lib-commonjs/runWindows/utils/version.js.map +0 -1
  137. package/lib-commonjs/runWindows/utils/vsInstalls.js +0 -70
  138. package/lib-commonjs/runWindows/utils/vsInstalls.js.map +0 -1
  139. package/lib-commonjs/runWindows/utils/vstools.js +0 -150
  140. package/lib-commonjs/runWindows/utils/vstools.js.map +0 -1
  141. package/lib-commonjs/runWindows/utils/winappdeploytool.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vstools.js","sourceRoot":"","sources":["../../src/utils/vstools.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n * @format\n */\n\nimport fs from '@react-native-windows/fs';\nimport path from 'path';\nimport chalk from 'chalk';\nimport {Project} from '../commands/config/projectConfig';\nimport {CodedError} from '@react-native-windows/telemetry';\n\nconst projectTypeGuidsByLanguage = {\n cpp: '{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}',\n cs: '{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}',\n};\n\nexport const dotNetCoreProjectTypeGuid =\n '{9A19103F-16F7-4668-BE54-9A1E7A4F7556}';\n\n/**\n * Checks is the given block of lines exists within an array of lines.\n * @param lines The array of lines to search.\n * @param block The block of lines to search for.\n * @return The starting index the block within lines, if it exists.\n */\nfunction linesContainsBlock(\n lines: string[],\n block: (string | RegExp)[],\n): number {\n if (block.length > 0) {\n const startIndex = lines.findIndex(s =>\n block[0] instanceof RegExp ? s.match(block[0]) : s === block[0],\n );\n\n if (startIndex >= 0) {\n for (let i = 1; i < block.length; i++) {\n if (\n block[i] instanceof RegExp\n ? !lines[startIndex + i].match(block[i])\n : lines[startIndex + i] !== block[i]\n ) {\n return -1;\n }\n }\n return startIndex;\n }\n }\n\n return -1;\n}\n\n/**\n * Insert the given block of lines into an array of lines.\n * @param lines The array of lines to insert into.\n * @param block The block of lines to insert.\n * @param index The index to perform the insert.\n */\nfunction insertBlockIntoLines(lines: string[], block: string[], index: number) {\n for (let i = 0; i < block.length; i++) {\n lines.splice(index + i, 0, block[i]);\n }\n}\n\n/**\n * Overwrite the lines at the given index with the block.\n * @param lines The destination array of lines to.\n * @param block The source block of lines.\n * @param index The index to perform the overwrite.\n */\nfunction overwriteLinesWithBlock(\n lines: string[],\n block: string[],\n index: number,\n) {\n for (let i = 0; i < block.length; i++) {\n lines[index + i] = block[i];\n }\n}\n\n/**\n * Search through an array of lines for a block of lines starting with startLine and ending with endLine.\n * @param lines The array of lines to search.\n * @param startLine The first line of the block.\n * @param endLine The last line of the block.\n * @param includeStartEnd Include the start and end lines in the result.\n * @return The found block of lines, if found.\n */\nfunction getBlockContentsFromLines(\n lines: string[],\n startLine: string,\n endLine: string,\n includeStartEnd: boolean = true,\n): string[] {\n const startIndex = lines.indexOf(startLine);\n const endIndex = lines.indexOf(endLine, startIndex);\n\n if (startIndex >= 0 && startIndex < endIndex) {\n if (includeStartEnd) {\n return lines.slice(startIndex, endIndex + 1);\n } else if (startIndex + 1 < endIndex) {\n return lines.slice(startIndex + 1, endIndex);\n }\n }\n\n return [];\n}\n\n/**\n * Adds the necessary info from a VS project into a VS solution file so that it will build.\n * @param slnFile The Absolute path to the target VS solution file.\n * @param project The object representing the project info.\n * @param verbose If true, enable verbose logging.\n * @param checkMode It true, don't make any changes.\n * @return Whether any changes were necessary.\n */\nexport function addProjectToSolution(\n slnFile: string,\n project: Project,\n verbose: boolean = false,\n checkMode: boolean = false,\n): boolean {\n if (project.projectLang === null) {\n throw new CodedError(\n 'AddProjectToSolution',\n 'Unable to add project to solution, projectLang is null',\n );\n }\n\n if (project.projectGuid === null) {\n throw new CodedError(\n 'AddProjectToSolution',\n 'Unable to add project to solution, projectGuid is null',\n );\n }\n\n if (verbose) {\n console.log(\n `Processing ${chalk.bold(path.basename(project.projectFile))}...`,\n );\n }\n\n const originalSlnContents = fs.readFileSync(slnFile).toString();\n\n const isCRLF = originalSlnContents.includes('\\r\\n');\n\n const slnLines = originalSlnContents.split(isCRLF ? '\\r\\n' : '\\n');\n\n let contentsChanged = false;\n\n // Check for the project entry block\n\n const slnDir = path.dirname(slnFile);\n const relProjectFile = path.relative(slnDir, project.projectFile);\n\n const projectTypeGuid =\n 'projectTypeGuid' in project\n ? project.projectTypeGuid!\n : projectTypeGuidsByLanguage[project.projectLang];\n\n const projectGuid = project.projectGuid.toUpperCase();\n\n const projectEntryBlock = [\n `Project(\"${projectTypeGuid}\") = \"${project.projectName}\", \"${relProjectFile}\", \"${projectGuid}\"`,\n 'EndProject',\n ];\n\n const projectEntryBlockRegex = [\n new RegExp(\n `Project\\\\(\"${projectTypeGuid}\"\\\\) = \"${project.projectName}\", \"(.*)\", \"${projectGuid}\"`,\n ),\n 'EndProject',\n ];\n\n const blockIndex = linesContainsBlock(slnLines, projectEntryBlockRegex);\n\n if (blockIndex < 0) {\n // Regex didn't match, insert\n if (verbose) {\n console.log(chalk.yellow('Missing project entry block, inserting.'));\n }\n\n const globalIndex = slnLines.indexOf('Global');\n insertBlockIntoLines(slnLines, projectEntryBlock, globalIndex);\n contentsChanged = true;\n } else if (linesContainsBlock(slnLines, projectEntryBlock) < 0) {\n // Regex matched but project path has changed, so correct it\n if (verbose) {\n console.log(\n chalk.yellow('Existing project entry block found, overwriting.'),\n );\n }\n\n overwriteLinesWithBlock(slnLines, projectEntryBlock, blockIndex);\n contentsChanged = true;\n }\n\n // Check for the project configuration platforms\n\n const slnConfigs = getBlockContentsFromLines(\n slnLines,\n '\\tGlobalSection(SolutionConfigurationPlatforms) = preSolution',\n '\\tEndGlobalSection',\n false,\n ).map(line => line.match(/\\s+([\\w\\s|]+)\\s=/)![1]);\n\n const projectConfigLines: string[] = [];\n\n slnConfigs.forEach(slnConfig => {\n if (!slnConfig.endsWith('|Any CPU')) {\n projectConfigLines.push(\n `\\t\\t${projectGuid}.${slnConfig}.ActiveCfg = ${\n project.projectLang === 'cpp'\n ? slnConfig.replace('x86', 'Win32')\n : slnConfig\n }`,\n );\n projectConfigLines.push(\n `\\t\\t${projectGuid}.${slnConfig}.Build.0 = ${\n project.projectLang === 'cpp'\n ? slnConfig.replace('x86', 'Win32')\n : slnConfig\n }`,\n );\n }\n });\n\n const projectConfigStartIndex = slnLines.indexOf(\n '\\tGlobalSection(ProjectConfigurationPlatforms) = postSolution',\n );\n\n projectConfigLines.forEach(projectConfigLine => {\n if (!slnLines.includes(projectConfigLine)) {\n if (verbose) {\n const configLine = projectConfigLine.substr(\n projectConfigLine.indexOf('= ') + 2,\n );\n console.log(chalk.yellow(`Missing ${configLine} config block.`));\n }\n\n const projectConfigEndIndex = slnLines.indexOf(\n '\\tEndGlobalSection',\n projectConfigStartIndex,\n );\n\n slnLines.splice(projectConfigEndIndex, 0, projectConfigLine);\n contentsChanged = true;\n }\n });\n\n // Write out new solution file if there were changes\n if (contentsChanged) {\n if (verbose) {\n console.log(\n chalk.yellow(\n `${chalk.bold(path.basename(slnFile))} needs to be updated.`,\n ),\n );\n }\n\n if (!checkMode) {\n if (verbose) {\n console.log(\n `Writing changes to ${chalk.bold(path.basename(slnFile))}...`,\n );\n }\n\n const slnContents = slnLines.join(isCRLF ? '\\r\\n' : '\\n');\n fs.writeFileSync(slnFile, slnContents, {\n encoding: 'utf8',\n flag: 'w',\n });\n }\n } else {\n if (verbose) {\n console.log(`No changes to ${chalk.bold(path.basename(slnFile))}.`);\n }\n }\n\n return contentsChanged;\n}\n"]}
@@ -1,24 +1,24 @@
1
- /**
2
- * Copyright (c) Microsoft Corporation.
3
- * Licensed under the MIT License.
4
- * @format
5
- */
6
- declare class DeviceInfo {
7
- readonly name: string;
8
- readonly guid: string;
9
- readonly ip: string;
10
- private index;
11
- private type;
12
- constructor(name: string, guid: string, ip: string, index: number, type: string);
13
- toString(): string;
14
- }
15
- export default class WinAppDeployTool {
16
- private path;
17
- constructor();
18
- get isAvailable(): boolean;
19
- findDevice(target: string): DeviceInfo;
20
- enumerateDevices(): DeviceInfo[];
21
- installAppPackage(pathToAppxPackage: string, targetDevice: DeviceInfo, shouldLaunch: boolean, shouldUpdate: boolean, pin: boolean, verbose?: boolean): Promise<void>;
22
- uninstallAppPackage(appName: string, targetDevice: DeviceInfo, verbose: boolean): Promise<void>;
23
- }
24
- export {};
1
+ /**
2
+ * Copyright (c) Microsoft Corporation.
3
+ * Licensed under the MIT License.
4
+ * @format
5
+ */
6
+ declare class DeviceInfo {
7
+ readonly name: string;
8
+ readonly guid: string;
9
+ readonly ip: string;
10
+ private readonly index;
11
+ private readonly type;
12
+ constructor(name: string, guid: string, ip: string, index: number, type: string);
13
+ toString(): string;
14
+ }
15
+ export default class WinAppDeployTool {
16
+ private readonly path;
17
+ constructor();
18
+ get isAvailable(): boolean;
19
+ findDevice(target: string): DeviceInfo;
20
+ enumerateDevices(): DeviceInfo[];
21
+ installAppPackage(pathToAppxPackage: string, targetDevice: DeviceInfo, shouldLaunch: boolean, shouldUpdate: boolean, pin: boolean, verbose?: boolean): Promise<void>;
22
+ uninstallAppPackage(appName: string, targetDevice: DeviceInfo, verbose: boolean): Promise<void>;
23
+ }
24
+ export {};
@@ -1,106 +1,109 @@
1
- "use strict";
2
- /**
3
- * Copyright (c) Microsoft Corporation.
4
- * Licensed under the MIT License.
5
- * @format
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- const fs = require("fs");
9
- const path = require("path");
10
- const child_process_1 = require("child_process");
11
- const commandWithProgress_1 = require("./commandWithProgress");
12
- function sortDevices(l, r) {
13
- return l.toString().length - r.toString().length;
14
- }
15
- class DeviceInfo {
16
- constructor(name, guid, ip, index, type) {
17
- this.name = name;
18
- this.guid = guid;
19
- this.ip = ip;
20
- this.index = index;
21
- this.type = type;
22
- }
23
- toString() {
24
- return `${this.index}. ${this.name} (${this.type})`;
25
- }
26
- }
27
- class WinAppDeployTool {
28
- constructor() {
29
- const programFilesPath = process.env['ProgramFiles(x86)'] || process.env.ProgramFiles;
30
- this.path = path.join(programFilesPath, 'Windows Kits', '10', 'bin', 'x86', 'WinAppDeployCmd.exe');
31
- }
32
- get isAvailable() {
33
- return fs.existsSync(this.path);
34
- }
35
- findDevice(target) {
36
- const devices = this.enumerateDevices();
37
- if (devices.length === 0) {
38
- throw new Error('No devices found');
39
- }
40
- if (target === 'emulator') {
41
- const sortedList = devices.sort(sortDevices);
42
- for (let i = 0; i < sortedList.length; i++) {
43
- const sortedItem = sortedList[i];
44
- if (sortedItem.toString().indexOf(target) > -1) {
45
- return sortedItem;
46
- }
47
- }
48
- }
49
- if (target === 'device') {
50
- return devices[0];
51
- }
52
- const candidateList = devices.filter(device => device.guid === target);
53
- if (candidateList.length > 0) {
54
- return candidateList[0];
55
- }
56
- else {
57
- throw new Error('No devices found');
58
- }
59
- }
60
- enumerateDevices() {
61
- // 127.0.0.1 00000015-b21e-0da9-0000-000000000000 Lumia 1520 (RM-940)\r
62
- // maps to
63
- // [(line), '127.0.0.1', '00000015-b21e-0da9-0000-000000000000', 'Lumia 1520 (RM-940)']
64
- // The expansion is: IP address, spaces, GUID, spaces, text name
65
- const LINE_TEST = /^([\d\.]+?)\s+([\da-fA-F\-]+?)\s+(.+)$/m; // eslint-disable-line no-useless-escape
66
- const result = child_process_1.execSync(`"${this.path}" devices`).toString();
67
- const lines = result.split('\r\n');
68
- const matchedLines = lines.filter(line => LINE_TEST.test(line));
69
- const devices = matchedLines.map((line, arrayIndex) => {
70
- const match = line.match(LINE_TEST);
71
- if (!match) {
72
- throw new Error('Unexpected format of "devices" output');
73
- }
74
- const ip = match[1];
75
- const guid = match[2];
76
- const name = match[3];
77
- const type = 'device';
78
- const deviceInfo = new DeviceInfo(name, guid, ip, arrayIndex, type);
79
- return deviceInfo;
80
- });
81
- return devices;
82
- }
83
- async installAppPackage(pathToAppxPackage, targetDevice, shouldLaunch, shouldUpdate, pin, verbose = false) {
84
- const text = `Installing app to ${targetDevice.name}`;
85
- if (shouldLaunch) {
86
- commandWithProgress_1.newWarn('Cannot launch app with current version of Windows 10 SDK tools. You will have to launch the app after installation is completed.');
87
- }
88
- const args = [
89
- shouldUpdate ? 'update' : 'install',
90
- '-file',
91
- pathToAppxPackage,
92
- '-ip',
93
- targetDevice.ip,
94
- ];
95
- if (pin) {
96
- args.push('-pin', pin.toString());
97
- }
98
- await commandWithProgress_1.commandWithProgress(commandWithProgress_1.newSpinner(text), text, this.path, args, verbose);
99
- }
100
- async uninstallAppPackage(appName, targetDevice, verbose) {
101
- const text = `Uninstalling app from ${targetDevice.name}`;
102
- await commandWithProgress_1.commandWithProgress(commandWithProgress_1.newSpinner(text), text, this.path, `uninstall -package ${appName} -ip {$targetDevice.ip}`.split(' '), verbose);
103
- }
104
- }
105
- exports.default = WinAppDeployTool;
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
+ const fs_1 = __importDefault(require("@react-native-windows/fs"));
12
+ const path_1 = __importDefault(require("path"));
13
+ const child_process_1 = require("child_process");
14
+ const commandWithProgress_1 = require("./commandWithProgress");
15
+ const telemetry_1 = require("@react-native-windows/telemetry");
16
+ function sortDevices(l, r) {
17
+ return l.toString().length - r.toString().length;
18
+ }
19
+ class DeviceInfo {
20
+ constructor(name, guid, ip, index, type) {
21
+ this.name = name;
22
+ this.guid = guid;
23
+ this.ip = ip;
24
+ this.index = index;
25
+ this.type = type;
26
+ }
27
+ toString() {
28
+ return `${this.index}. ${this.name} (${this.type})`;
29
+ }
30
+ }
31
+ class WinAppDeployTool {
32
+ constructor() {
33
+ const programFilesPath = process.env['ProgramFiles(x86)'] || process.env.ProgramFiles;
34
+ this.path = path_1.default.join(programFilesPath, 'Windows Kits', '10', 'bin', 'x86', 'WinAppDeployCmd.exe');
35
+ }
36
+ get isAvailable() {
37
+ return fs_1.default.existsSync(this.path);
38
+ }
39
+ findDevice(target) {
40
+ const devices = this.enumerateDevices();
41
+ if (devices.length === 0) {
42
+ throw new telemetry_1.CodedError('NoDevice', 'No devices found');
43
+ }
44
+ if (target === 'emulator') {
45
+ const sortedList = devices.sort(sortDevices);
46
+ for (const sortedItem of sortedList) {
47
+ if (sortedItem.toString().includes(target)) {
48
+ return sortedItem;
49
+ }
50
+ }
51
+ }
52
+ if (target === 'device') {
53
+ return devices[0];
54
+ }
55
+ const candidateList = devices.filter(device => device.guid === target);
56
+ if (candidateList.length > 0) {
57
+ return candidateList[0];
58
+ }
59
+ else {
60
+ throw new telemetry_1.CodedError('NoDevice', 'No devices found');
61
+ }
62
+ }
63
+ enumerateDevices() {
64
+ // 127.0.0.1 00000015-b21e-0da9-0000-000000000000 Lumia 1520 (RM-940)\r
65
+ // maps to
66
+ // [(line), '127.0.0.1', '00000015-b21e-0da9-0000-000000000000', 'Lumia 1520 (RM-940)']
67
+ // The expansion is: IP address, spaces, GUID, spaces, text name
68
+ const LINE_TEST = /^([\d\.]+?)\s+([\da-fA-F\-]+?)\s+(.+)$/m; // eslint-disable-line no-useless-escape
69
+ const result = (0, child_process_1.execSync)(`"${this.path}" devices`).toString();
70
+ const lines = result.split('\r\n');
71
+ const matchedLines = lines.filter(line => LINE_TEST.test(line));
72
+ const devices = matchedLines.map((line, arrayIndex) => {
73
+ const match = line.match(LINE_TEST);
74
+ if (!match) {
75
+ throw new telemetry_1.CodedError('InvalidDevicesOutput', 'Unexpected format of "devices" output');
76
+ }
77
+ const ip = match[1];
78
+ const guid = match[2];
79
+ const name = match[3];
80
+ const type = 'device';
81
+ const deviceInfo = new DeviceInfo(name, guid, ip, arrayIndex, type);
82
+ return deviceInfo;
83
+ });
84
+ return devices;
85
+ }
86
+ async installAppPackage(pathToAppxPackage, targetDevice, shouldLaunch, shouldUpdate, pin, verbose = false) {
87
+ const text = `Installing app to ${targetDevice.name}`;
88
+ if (shouldLaunch) {
89
+ (0, commandWithProgress_1.newWarn)('Cannot launch app with current version of Windows 10 SDK tools. You will have to launch the app after installation is completed.');
90
+ }
91
+ const args = [
92
+ shouldUpdate ? 'update' : 'install',
93
+ '-file',
94
+ pathToAppxPackage,
95
+ '-ip',
96
+ targetDevice.ip,
97
+ ];
98
+ if (pin) {
99
+ args.push('-pin', pin.toString());
100
+ }
101
+ await (0, commandWithProgress_1.commandWithProgress)((0, commandWithProgress_1.newSpinner)(text), text, this.path, args, verbose, 'InstallAppToDeviceFailure');
102
+ }
103
+ async uninstallAppPackage(appName, targetDevice, verbose) {
104
+ const text = `Uninstalling app from ${targetDevice.name}`;
105
+ await (0, commandWithProgress_1.commandWithProgress)((0, commandWithProgress_1.newSpinner)(text), text, this.path, `uninstall -package ${appName} -ip {$targetDevice.ip}`.split(' '), verbose, 'UninstallAppOnDeviceFailure');
106
+ }
107
+ }
108
+ exports.default = WinAppDeployTool;
106
109
  //# sourceMappingURL=winappdeploytool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"winappdeploytool.js","sourceRoot":"","sources":["../../src/utils/winappdeploytool.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\nimport fs from '@react-native-windows/fs';\nimport path from 'path';\nimport {execSync} from 'child_process';\nimport {newSpinner, commandWithProgress, newWarn} from './commandWithProgress';\nimport {CodedError} from '@react-native-windows/telemetry';\n\nfunction sortDevices(l: DeviceInfo, r: DeviceInfo): number {\n return l.toString().length - r.toString().length;\n}\n\nclass DeviceInfo {\n constructor(\n public readonly name: string,\n public readonly guid: string,\n public readonly ip: string,\n\n private readonly index: number,\n private readonly type: string,\n ) {}\n\n toString() {\n return `${this.index}. ${this.name} (${this.type})`;\n }\n}\n\nexport default class WinAppDeployTool {\n private readonly path: string;\n\n constructor() {\n const programFilesPath =\n process.env['ProgramFiles(x86)'] || process.env.ProgramFiles;\n this.path = path.join(\n programFilesPath!,\n 'Windows Kits',\n '10',\n 'bin',\n 'x86',\n 'WinAppDeployCmd.exe',\n );\n }\n\n get isAvailable() {\n return fs.existsSync(this.path);\n }\n\n findDevice(target: string): DeviceInfo {\n const devices = this.enumerateDevices();\n\n if (devices.length === 0) {\n throw new CodedError('NoDevice', 'No devices found');\n }\n\n if (target === 'emulator') {\n const sortedList = devices.sort(sortDevices);\n for (const sortedItem of sortedList) {\n if (sortedItem.toString().includes(target)) {\n return sortedItem;\n }\n }\n }\n\n if (target === 'device') {\n return devices[0];\n }\n\n const candidateList = devices.filter(device => device.guid === target);\n\n if (candidateList.length > 0) {\n return candidateList[0];\n } else {\n throw new CodedError('NoDevice', 'No devices found');\n }\n }\n\n enumerateDevices(): DeviceInfo[] {\n // 127.0.0.1 00000015-b21e-0da9-0000-000000000000 Lumia 1520 (RM-940)\\r\n // maps to\n // [(line), '127.0.0.1', '00000015-b21e-0da9-0000-000000000000', 'Lumia 1520 (RM-940)']\n // The expansion is: IP address, spaces, GUID, spaces, text name\n const LINE_TEST = /^([\\d\\.]+?)\\s+([\\da-fA-F\\-]+?)\\s+(.+)$/m; // eslint-disable-line no-useless-escape\n\n const result = execSync(`\"${this.path}\" devices`).toString();\n const lines = result.split('\\r\\n');\n const matchedLines = lines.filter(line => LINE_TEST.test(line));\n\n const devices = matchedLines.map((line, arrayIndex) => {\n const match = line.match(LINE_TEST);\n if (!match) {\n throw new CodedError(\n 'InvalidDevicesOutput',\n 'Unexpected format of \"devices\" output',\n );\n }\n\n const ip = match[1];\n const guid = match[2];\n const name = match[3];\n const type = 'device';\n\n const deviceInfo = new DeviceInfo(name, guid, ip, arrayIndex, type);\n return deviceInfo;\n });\n\n return devices;\n }\n\n async installAppPackage(\n pathToAppxPackage: string,\n targetDevice: DeviceInfo,\n shouldLaunch: boolean,\n shouldUpdate: boolean,\n pin: boolean,\n verbose: boolean = false,\n ) {\n const text = `Installing app to ${targetDevice.name}`;\n\n if (shouldLaunch) {\n newWarn(\n 'Cannot launch app with current version of Windows 10 SDK tools. You will have to launch the app after installation is completed.',\n );\n }\n\n const args = [\n shouldUpdate ? 'update' : 'install',\n '-file',\n pathToAppxPackage,\n '-ip',\n targetDevice.ip,\n ];\n\n if (pin) {\n args.push('-pin', pin.toString());\n }\n await commandWithProgress(\n newSpinner(text),\n text,\n this.path,\n args,\n verbose,\n 'InstallAppToDeviceFailure',\n );\n }\n\n async uninstallAppPackage(\n appName: string,\n targetDevice: DeviceInfo,\n verbose: boolean,\n ) {\n const text = `Uninstalling app from ${targetDevice.name}`;\n await commandWithProgress(\n newSpinner(text),\n text,\n this.path,\n `uninstall -package ${appName} -ip {$targetDevice.ip}`.split(' '),\n verbose,\n 'UninstallAppOnDeviceFailure',\n );\n }\n}\n"]}
package/package.json CHANGED
@@ -1,72 +1,92 @@
1
1
  {
2
2
  "name": "@react-native-windows/cli",
3
- "version": "0.0.0-canary.21",
3
+ "version": "0.0.0-canary.210",
4
4
  "license": "MIT",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "git@github.com:microsoft/react-native-windows.git",
8
+ "url": "https://github.com/microsoft/react-native-windows",
9
9
  "directory": "packages/@react-native-windows/cli"
10
10
  },
11
11
  "scripts": {
12
- "build": "just-scripts build",
13
- "clean": "just-scripts clean",
14
- "lint": "just-scripts lint",
15
- "lint:fix": "just-scripts lint:fix",
16
- "test": "just-scripts test",
17
- "watch": "just-scripts watch"
12
+ "build": "rnw-scripts build",
13
+ "clean": "rnw-scripts clean",
14
+ "lint": "rnw-scripts lint",
15
+ "lint:fix": "rnw-scripts lint:fix",
16
+ "test": "rnw-scripts test",
17
+ "watch": "rnw-scripts watch"
18
18
  },
19
19
  "dependencies": {
20
+ "@react-native-windows/codegen": "0.0.0-canary.84",
21
+ "@react-native-windows/fs": "^0.0.0-canary.41",
22
+ "@react-native-windows/package-utils": "^0.0.0-canary.67",
23
+ "@react-native-windows/telemetry": "^0.0.0-canary.92",
24
+ "@xmldom/xmldom": "^0.7.7",
20
25
  "chalk": "^4.1.0",
21
26
  "cli-spinners": "^2.2.0",
22
27
  "envinfo": "^7.5.0",
28
+ "find-up": "^4.1.0",
23
29
  "glob": "^7.1.1",
24
- "inquirer": "^3.0.6",
30
+ "lodash": "^4.17.15",
25
31
  "mustache": "^4.0.1",
26
- "nuget-exe": "4.9.2",
27
32
  "ora": "^3.4.0",
33
+ "prompts": "^2.4.1",
28
34
  "semver": "^7.3.2",
29
35
  "shelljs": "^0.8.4",
30
36
  "username": "^5.1.0",
31
37
  "uuid": "^3.3.2",
38
+ "xml-formatter": "^2.4.0",
32
39
  "xml-parser": "^1.2.1",
33
- "xmldom": "^0.3.0",
34
40
  "xpath": "^0.0.27"
35
41
  },
36
42
  "devDependencies": {
37
- "@react-native-community/cli-types": "^4.10.1",
38
- "@rnw-scripts/eslint-config": "0.1.4",
39
- "@rnw-scripts/jest-unittest-config": "0.1.1",
40
- "@rnw-scripts/just-task": "0.0.6",
41
- "@rnw-scripts/ts-config": "0.1.0",
43
+ "@react-native-community/cli-doctor": "13.6.1",
44
+ "@react-native-community/cli-types": "13.6.1",
45
+ "@rnw-scripts/eslint-config": "1.2.13",
46
+ "@rnw-scripts/jest-unittest-config": "1.5.8",
47
+ "@rnw-scripts/just-task": "2.3.29",
48
+ "@rnw-scripts/ts-config": "2.0.5",
42
49
  "@types/chalk": "^2.2.0",
43
- "@types/inquirer": "^6.5.0",
44
- "@types/jest": "^26.0.13",
45
- "@types/mustache": "^4.0.1",
50
+ "@types/jest": "^29.2.2",
51
+ "@types/lodash": "^4.14.168",
52
+ "@types/mustache": "^4.1.1",
53
+ "@types/node": "^18.0.0",
46
54
  "@types/ora": "^3.2.0",
55
+ "@types/prompts": "2.0.10",
47
56
  "@types/semver": "^7.3.3",
48
57
  "@types/shelljs": "^0.8.8",
49
- "@types/uuid": "^8.0.0",
58
+ "@types/uuid": "^8.3.0",
50
59
  "@types/xml-parser": "^1.2.29",
51
- "@types/xmldom": "^0.1.29",
52
- "babel-jest": "^26.3.0",
53
- "eslint": "6.8.0",
54
- "jest": "^26.4.2",
55
- "just-scripts": "^0.36.1",
56
- "prettier": "1.19.1",
57
- "typescript": "^3.8.3"
60
+ "@types/xmldom": "^0.1.30",
61
+ "@typescript-eslint/eslint-plugin": "^5.30.5",
62
+ "@typescript-eslint/parser": "^5.57.1",
63
+ "babel-jest": "^29.6.3",
64
+ "eslint": "^8.19.0",
65
+ "jest": "^29.6.3",
66
+ "prettier": "2.8.8",
67
+ "typescript": "5.0.4"
68
+ },
69
+ "peerDependencies": {
70
+ "react-native": "*"
58
71
  },
59
72
  "files": [
60
73
  "lib-commonjs",
61
- "powershell"
74
+ "src/powershell"
62
75
  ],
63
76
  "beachball": {
64
77
  "defaultNpmTag": "canary",
65
78
  "disallowedChangeTypes": [
66
79
  "major",
67
80
  "minor",
68
- "patch"
81
+ "patch",
82
+ "premajor",
83
+ "preminor",
84
+ "prepatch"
69
85
  ]
70
86
  },
71
- "promoteRelease": true
87
+ "promoteRelease": true,
88
+ "windowsOnly": true,
89
+ "engines": {
90
+ "node": ">= 18"
91
+ }
72
92
  }
@@ -107,10 +107,10 @@ function PrintMessageAndExit($ErrorMessage, $ReturnCode)
107
107
  {
108
108
  # Log telemetry data regarding the use of the script if possible.
109
109
  # There are three ways that this can be disabled:
110
- # 1. If the "TelemetryDependencies" folder isn't present. This can be excluded at build time by setting the MSBuild property AppxLogTelemetryFromSideloadingScript to false
110
+ # 1. If the "TelDeps" folder isn't present. This can be excluded at build time by setting the MSBuild property AppxLogTelemetryFromSideloadingScript to false
111
111
  # 2. If the SkipLoggingTelemetry switch is passed to this script.
112
112
  # 3. If Visual Studio telemetry is disabled via the registry.
113
- $TelemetryAssembliesFolder = (Join-Path $PSScriptRoot "TelemetryDependencies")
113
+ $TelemetryAssembliesFolder = (Join-Path $PSScriptRoot "TelDeps")
114
114
  if (!$SkipLoggingTelemetry -And (Test-Path $TelemetryAssembliesFolder))
115
115
  {
116
116
  $job = Start-Job -FilePath (Join-Path $TelemetryAssembliesFolder "LogSideloadingTelemetry.ps1") -ArgumentList $TelemetryAssembliesFolder, "VS/DesignTools/SideLoadingScript/AddAppDevPackage", $ReturnCode, $ProcessorArchitecture
@@ -0,0 +1,156 @@
1
+ # Copyright (c) Microsoft Corporation.
2
+ # Licensed under the MIT License.
3
+ #
4
+ # Eval-MsBuildProperties.ps1
5
+ #
6
+ # This script lets you determine the final values of MSBUILD properties for a
7
+ # given solution and project file. Simply pass in a comma delimited list of
8
+ # property names and you'll get a JSON blob of evaluated values.
9
+ #
10
+ # For example, from the root of the repo:
11
+ #
12
+ # .\packages\@react-native-windows\cli\powershell\Eval-MsBuildProperties.ps1 -SolutionFile 'vnext\Microsoft.ReactNative.sln' -ProjectFile 'vnext\Microsoft.ReactNative\Microsoft.ReactNative.vcxproj' -PropertyNames 'ProjectGUID,ProjectName'
13
+ #
14
+ # will output:
15
+ #
16
+ # {
17
+ # "ProjectGuid": "{f7d32bd0-2749-483e-9a0d-1635ef7e3136}",
18
+ # "ProjectName": "Microsoft.ReactNative"
19
+ # }
20
+ #
21
+
22
+ param(
23
+ [Parameter(Mandatory = $true)]
24
+ [String]$SolutionFile,
25
+ [Parameter(Mandatory = $true)]
26
+ [String]$ProjectFile,
27
+ [Parameter()]
28
+ [String]$PropertyNames = "",
29
+ [Parameter()]
30
+ [String]$MSBuildPath,
31
+ [Parameter()]
32
+ [String]$ExtraMSBuildProps
33
+ )
34
+
35
+ function Get-MSBuildPath {
36
+ $vsWhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
37
+ if (!(Test-Path $vsWhere)) {
38
+ throw "Unable to find vswhere.exe."
39
+ }
40
+ $vsPath = & $vsWhere -version 16.5 -property installationPath;
41
+ return "$vsPath\MSBuild\Current\Bin";
42
+ }
43
+
44
+ function Get-MSBuildProperties {
45
+ param (
46
+ [Parameter(Mandatory = $true)]
47
+ [String]$MSBuildPath,
48
+ [Parameter(Mandatory = $true)]
49
+ [String]$SolutionPath,
50
+ [Parameter(Mandatory = $true)]
51
+ [String]$ProjectPath,
52
+ [Parameter()]
53
+ [String[]]$PropertyNames = @(),
54
+ [Parameter()]
55
+ [String]$ExtraMSBuildProps
56
+ )
57
+
58
+ if (!(Test-Path (Join-Path $MSBuildPath "MSBuild.exe"))) {
59
+ throw "Unable to find MSBuild.exe in $MSBuildPath"
60
+ }
61
+
62
+ if (!(Test-Path (Join-Path $MSBuildPath "MSBuild.exe"))) {
63
+ throw "Unable to find Microsoft.Build.dll in $MSBuildPath"
64
+ }
65
+
66
+ # Method to intercept resolution of assemblies to add MSBuild's path
67
+ $onAssemblyResolveEventHandler = [System.ResolveEventHandler] {
68
+ param($s, $e)
69
+
70
+ # Figure out which assembly to look for
71
+ $assemblyName = $e.Name.Substring(0, $e.Name.IndexOf(", "));
72
+ $assemblyPath = "$MSBuildPath\$assemblyName.dll"
73
+
74
+ # Search for the assembly in the MSBuild directory
75
+ if (Test-Path $assemblyPath) {
76
+ # Found the assembly!
77
+ return [System.Reflection.Assembly]::LoadFrom("$MSBuildPath\$assemblyName.dll");
78
+ }
79
+
80
+ # Unable to find the assembly
81
+ return $null
82
+ }
83
+
84
+ # Wire-up assembly resolution event handler
85
+ [System.AppDomain]::CurrentDomain.add_AssemblyResolve($onAssemblyResolveEventHandler)
86
+
87
+ # Load Microsoft.Build.dll into script
88
+ Add-Type -Path "$MSBuildPath\Microsoft.Build.dll" | Out-Null
89
+
90
+ # Build a local project collection
91
+ $projectCollection = [Microsoft.Build.Evaluation.ProjectCollection]::new()
92
+
93
+ try {
94
+ # Build a temporary "metaproj" of the solution file so it can be processed
95
+ ${env:MSBUILDEMITSOLUTION} = 1
96
+ & $MSBuildPath\MSBuild.exe $SolutionPath | Out-Null
97
+
98
+ # Process solution
99
+ $solution = [Microsoft.Build.Evaluation.Project]::new("$SolutionPath.metaproj", $null, "Current", $projectCollection)
100
+ }
101
+ finally {
102
+ # Clean up "metaproj" files
103
+ ${env:MSBUILDEMITSOLUTION} = 0
104
+ Remove-Item -Path @("$SolutionPath.metaproj", "$SolutionPath.metaproj.tmp") | Out-Null
105
+ Get-ChildItem * -Include *.metaproj -Recurse | Remove-Item | Out-Null
106
+ }
107
+
108
+ # Evaluate all of the Solution* properties and save into a collection
109
+ $globalProps = New-Object 'System.Collections.Generic.Dictionary[String,String]'
110
+ $solution.Properties | ForEach-Object -Process {
111
+ if ($_.Name.StartsWith("Solution")) {
112
+ $globalProps.Add($_.Name, $_.EvaluatedValue)
113
+ }
114
+ }
115
+
116
+ # Evaluate all extra build props and save into the collection
117
+ $extraPropsTable = ConvertFrom-StringData -StringData $ExtraMSBuildProps.Replace(',', "`n")
118
+ $extraPropsTable.Keys | ForEach-Object -Process {
119
+ $globalProps[$_] = $extraPropsTable[$_]
120
+ }
121
+
122
+ # Process the project file (with the Solution* properties we calculated before)
123
+ $project = [Microsoft.Build.Evaluation.Project]::new("$ProjectPath", $globalProps, "Current", $projectCollection)
124
+
125
+ # Create object to hold evaluated property key value pairs
126
+ $evaluatedProps = @{}
127
+
128
+ # Look for the specified PropertyNames and evaluate them
129
+ $project.Properties | ForEach-Object -Process {
130
+ if (($PropertyNames.Length -eq 0) -or ($PropertyNames -contains $_.Name)) {
131
+ $evaluatedProps[$_.Name] = $_.EvaluatedValue;
132
+ }
133
+ }
134
+
135
+ # Output as JSON
136
+ Write-Output (ConvertTo-Json $evaluatedProps)
137
+ }
138
+
139
+ # Main
140
+
141
+ if ($MSBuildPath -and (Test-Path $MSBuildPath)) {
142
+ if (Test-Path $MSBuildPath -PathType Leaf) {
143
+ # It's a file (probably msbuild.exe), just get the folder path
144
+ $MSBuildPath = [System.IO.Path]::GetDirectoryName($MSBuildPath)
145
+ }
146
+ }
147
+ else {
148
+ # Use simple fallback logic in this script to find MSBuild path
149
+ $MSBuildPath = Get-MSBuildPath
150
+ }
151
+
152
+ # Get the full absolute paths to the solution and projects
153
+ $SolutionPath = Convert-Path $SolutionFile
154
+ $ProjectPath = Convert-Path $ProjectFile
155
+
156
+ Get-MSBuildProperties -MSBuildPath $MSBuildPath -SolutionPath $SolutionPath -ProjectPath $ProjectPath -PropertyNames $PropertyNames.Split(',', [System.StringSplitOptions]::RemoveEmptyEntries) -ExtraMSBuildProps $ExtraMSBuildProps
@@ -143,7 +143,17 @@ function CheckIfNeedInstallCertificate
143
143
  )
144
144
 
145
145
  $PackagePath = Get-ChildItem (Join-Path $ScriptDir "*.appx") | Where-Object { $_.Mode -NotMatch "d" }
146
+ if ($PackagePath -eq $null)
147
+ {
148
+ $PackagePath = Get-ChildItem (Join-Path $ScriptDir "*.msix") | Where-Object { $_.Mode -NotMatch "d" }
149
+ }
150
+
146
151
  $BundlePath = Get-ChildItem (Join-Path $ScriptDir "*.appxbundle") | Where-Object { $_.Mode -NotMatch "d" }
152
+ if ($BundlePath -eq $null)
153
+ {
154
+ $BundlePath = Get-ChildItem (Join-Path $ScriptDir "*.msixbundle") | Where-Object { $_.Mode -NotMatch "d" }
155
+ }
156
+
147
157
  # There must be exactly 1 package/bundle
148
158
  if (($PackagePath.Count + $BundlePath.Count) -lt 1)
149
159
  {