diff --git a/action-types.yml b/action-types.yml new file mode 100644 index 0000000..794fd5e --- /dev/null +++ b/action-types.yml @@ -0,0 +1,18 @@ +# See https://github.com/krzema12/github-actions-typing +inputs: + vswhere-path: + type: string + vs-version: + type: string + vs-prerelease: + type: boolean + msbuild-architecture: + type: enum + name: Architecture + allowed-values: + - x86 + - x64 + - arm64 +outputs: + msbuildPath: + type: string diff --git a/action.yml b/action.yml index e88ae5b..afbcc2f 100644 --- a/action.yml +++ b/action.yml @@ -15,7 +15,7 @@ inputs: description: 'Enable searching for pre-release versions of Visual Studio/MSBuild' required: false msbuild-architecture: - description: 'The preferred processor architecture of MSBuild. Can be either "x86" or "x64". "x64" is only available from Visual Studio version 17.0 and later.' + description: 'The preferred processor architecture of MSBuild. Can be either "x86", "x64", or "arm64". "x64" is only available from Visual Studio version 17.0 and later.' required: false default: 'x86' outputs: diff --git a/dist/index.js b/dist/index.js index 2b30209..134764c 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1652,7 +1652,7 @@ const IS_WINDOWS = process.platform === 'win32'; const VS_VERSION = core.getInput('vs-version') || 'latest'; const VSWHERE_PATH = core.getInput('vswhere-path'); const ALLOW_PRERELEASE = core.getInput('vs-prerelease') || 'false'; -const MSBUILD_ARCH = core.getInput('msbuild-architecture') || 'x86'; +let MSBUILD_ARCH = core.getInput('msbuild-architecture') || 'x86'; // if a specific version of VS is requested let VSWHERE_EXEC = '-products * -requires Microsoft.Component.MSBuild -property installationPath -latest '; if (ALLOW_PRERELEASE === 'true') { @@ -1703,6 +1703,10 @@ function run() { core.debug(`Found installation path: ${installationPath}`); // x64 and arm64 only exist in one possible location, so no fallback probing if (MSBUILD_ARCH === 'x64' || MSBUILD_ARCH === 'arm64') { + // x64 is actually amd64 so change to that + if (MSBUILD_ARCH === 'x64') { + MSBUILD_ARCH = 'amd64'; + } let toolPath = path.join(installationPath, `MSBuild\\Current\\Bin\\${MSBUILD_ARCH}\\MSBuild.exe`); core.debug(`Checking for path: ${toolPath}`); if (!fs.existsSync(toolPath)) { diff --git a/package-lock.json b/package-lock.json index 2938370..00a3193 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "setup-msbuild", - "version": "1.2.0", + "version": "1.3.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "setup-msbuild", - "version": "1.2.0", + "version": "1.3.0", "license": "MIT", "dependencies": { "@actions/core": "^1.10.0", diff --git a/package.json b/package.json index cb76856..2ab4da2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "setup-msbuild", - "version": "1.2.0", + "version": "1.3.1", "private": true, "description": "Helps set up specific MSBuild tool into PATH for later usage.", "main": "lib/main.js", diff --git a/src/main.ts b/src/main.ts index 5668bba..b449dc3 100644 --- a/src/main.ts +++ b/src/main.ts @@ -9,7 +9,7 @@ const IS_WINDOWS = process.platform === 'win32' const VS_VERSION = core.getInput('vs-version') || 'latest' const VSWHERE_PATH = core.getInput('vswhere-path') const ALLOW_PRERELEASE = core.getInput('vs-prerelease') || 'false' -const MSBUILD_ARCH = core.getInput('msbuild-architecture') || 'x86' +let MSBUILD_ARCH = core.getInput('msbuild-architecture') || 'x86' // if a specific version of VS is requested let VSWHERE_EXEC = '-products * -requires Microsoft.Component.MSBuild -property installationPath -latest ' @@ -73,6 +73,10 @@ async function run(): Promise { // x64 and arm64 only exist in one possible location, so no fallback probing if (MSBUILD_ARCH === 'x64' || MSBUILD_ARCH === 'arm64') { + // x64 is actually amd64 so change to that + if (MSBUILD_ARCH === 'x64') { + MSBUILD_ARCH = 'amd64' + } let toolPath = path.join( installationPath, `MSBuild\\Current\\Bin\\${MSBUILD_ARCH}\\MSBuild.exe`