From 7e9cdb9d9c8c38f919da184142c8bb04e9bf88cf Mon Sep 17 00:00:00 2001 From: Maria Date: Tue, 6 Jun 2017 00:07:06 +0300 Subject: [PATCH] fix: Do not pack "elevate.exe" when not needed Close #1620 --- packages/electron-builder/src/targets/nsis.ts | 11 +++++++---- test/src/helpers/winHelper.ts | 9 ++++++++- test/src/windows/oneClickInstallerTest.ts | 3 ++- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/packages/electron-builder/src/targets/nsis.ts b/packages/electron-builder/src/targets/nsis.ts index 111e78b1069..501a0d853f1 100644 --- a/packages/electron-builder/src/targets/nsis.ts +++ b/packages/electron-builder/src/targets/nsis.ts @@ -106,10 +106,13 @@ export class NsisTarget extends Target { /** @private */ async buildAppPackage(appOutDir: string, arch: Arch) { - await BluebirdPromise.all([ - copyFile(path.join(await nsisPathPromise, "elevate.exe"), path.join(appOutDir, "resources", "elevate.exe"), null, false), - copyFile(path.join(await getSignVendorPath(), "windows-10", Arch[arch], "signtool.exe"), path.join(appOutDir, "resources", "signtool.exe"), null, false), - ]) + var filesToCopy = []; + if (this.options.allowElevation === undefined || this.options.allowElevation) { + filesToCopy.push(copyFile(path.join(await nsisPathPromise, "elevate.exe"), path.join(appOutDir, "resources", "elevate.exe"), null, false)); + } + filesToCopy.push(copyFile(path.join(await getSignVendorPath(), "windows-10", Arch[arch], "signtool.exe"), path.join(appOutDir, "resources", "signtool.exe"), null, false)); + + await BluebirdPromise.all(filesToCopy) const packager = this.packager const format = this.options.useZip ? "zip" : "7z" diff --git a/test/src/helpers/winHelper.ts b/test/src/helpers/winHelper.ts index 55ca82a69f5..f8c90b25af7 100644 --- a/test/src/helpers/winHelper.ts +++ b/test/src/helpers/winHelper.ts @@ -9,8 +9,15 @@ import { assertThat } from "./fileAssert" import { PackedContext } from "./packTester" import { diff, WineManager } from "./wine" -export async function expectUpdateMetadata(context: PackedContext, arch: Arch = Arch.ia32, requireCodeSign: boolean = false): Promise { +export async function expectUpdateMetadata(context: PackedContext, arch: Arch = Arch.ia32, requireCodeSign: boolean = false, allowElevation: boolean = true): Promise { const data = safeLoad(await readFile(path.join(context.getResources(Platform.WINDOWS, arch), "app-update.yml"), "utf-8")) + + if (allowElevation) { + await assertThat(path.join(context.getResources(Platform.WINDOWS, arch), "elevate.exe")).isFile() + } else { + await assertThat(path.join(context.getResources(Platform.WINDOWS, arch), "elevate.exe")).doesNotExist() + } + if (requireCodeSign && process.env.CSC_KEY_PASSWORD != null) { expect(data.publisherName).toEqual(["Developer ID Installer: Vladimir Krivosheev (X8C9Z9L4HW)"]) delete data.publisherName diff --git a/test/src/windows/oneClickInstallerTest.ts b/test/src/windows/oneClickInstallerTest.ts index 3e26bcaa655..6e81b226849 100644 --- a/test/src/windows/oneClickInstallerTest.ts +++ b/test/src/windows/oneClickInstallerTest.ts @@ -19,13 +19,14 @@ test("one-click", app({ }, nsis: { deleteAppDataOnUninstall: true, + allowElevation: false }, } }, { signed: true, packed: async (context) => { await doTest(context.outDir, true) - await expectUpdateMetadata(context, Arch.ia32, true) + await expectUpdateMetadata(context, Arch.ia32, true, false) } }))