{"version":3,"file":"SquirrelWindowsTarget.js","sourceRoot":"","sources":["../src/SquirrelWindowsTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import { InvalidConfigurationError, log, isEmptyOrSpaces } from \"builder-util\"\nimport { execWine } from \"app-builder-lib/out/wine\"\nimport { getBinFromUrl } from \"app-builder-lib/out/binDownload\"\nimport { sanitizeFileName } from \"builder-util/out/filename\"\nimport { Arch, getArchSuffix, SquirrelWindowsOptions, Target, WinPackager } from \"app-builder-lib\"\nimport * as path from \"path\"\nimport * as fs from \"fs\"\nimport * as os from \"os\"\nimport { Options as SquirrelOptions, createWindowsInstaller, convertVersion } from \"electron-winstaller\"\n\nexport default class SquirrelWindowsTarget extends Target {\n  //tslint:disable-next-line:no-object-literal-type-assertion\n  readonly options: SquirrelWindowsOptions = { ...this.packager.platformSpecificBuildOptions, ...this.packager.config.squirrelWindows } as SquirrelWindowsOptions\n\n  isAsyncSupported = false\n\n  constructor(\n    private readonly packager: WinPackager,\n    readonly outDir: string\n  ) {\n    super(\"squirrel\")\n  }\n\n  private async prepareSignedVendorDirectory(): Promise<string> {\n    const customSquirrelVendorDirectory = this.options.customSquirrelVendorDir\n    const tmpVendorDirectory = await this.packager.info.tempDirManager.createTempDir({ prefix: \"squirrel-windows-vendor\" })\n\n    if (isEmptyOrSpaces(customSquirrelVendorDirectory) || !fs.existsSync(customSquirrelVendorDirectory)) {\n      log.warn({ customSquirrelVendorDirectory: customSquirrelVendorDirectory }, \"unable to access custom Squirrel.Windows vendor directory, falling back to default vendor \")\n      const windowInstallerPackage = require.resolve(\"electron-winstaller/package.json\")\n      const vendorDirectory = path.join(path.dirname(windowInstallerPackage), \"vendor\")\n\n      const squirrelBin = await getBinFromUrl(\n        \"squirrel.windows@1.0.0\",\n        \"squirrel.windows-2.0.1-patched.7z\",\n        \"DWijIRRElidu/Rq0yegAKqo2g6aVJUPvcRyvkzUoBPbRasIk61P6xY2fBMdXw6wT17md7NzrTI9/zA1wT9vEqg==\"\n      )\n\n      await fs.promises.cp(vendorDirectory, tmpVendorDirectory, { recursive: true })\n      // copy the patched squirrel to tmp vendor directory\n      await fs.promises.cp(path.join(squirrelBin, \"electron-winstaller\", \"vendor\"), tmpVendorDirectory, { recursive: true })\n    } else {\n      // copy the custom squirrel vendor directory to tmp vendor directory\n      await fs.promises.cp(customSquirrelVendorDirectory, tmpVendorDirectory, { recursive: true })\n    }\n\n    const files = await fs.promises.readdir(tmpVendorDirectory)\n    const squirrelExe = files.find(f => f === \"Squirrel.exe\")\n    if (squirrelExe) {\n      const filePath = path.join(tmpVendorDirectory, squirrelExe)\n      log.debug({ file: filePath }, \"signing vendor executable\")\n      await this.packager.signIf(filePath)\n    } else {\n      log.warn(\"Squirrel.exe not found in vendor directory, skipping signing\")\n    }\n    return tmpVendorDirectory\n  }\n\n  private async generateStubExecutableExe(appOutDir: string, vendorDir: string) {\n    const files = await fs.promises.readdir(appOutDir, { withFileTypes: true })\n    const appExe = files.find(f => f.name === `${this.exeName}.exe`)\n    if (!appExe) {\n      throw new Error(`App executable not found in app directory: ${appOutDir}`)\n    }\n\n    const filePath = path.join(appOutDir, appExe.name)\n    const stubExePath = path.join(appOutDir, `${this.exeName}_ExecutionStub.exe`)\n    await fs.promises.copyFile(path.join(vendorDir, \"StubExecutable.exe\"), stubExePath)\n    await execWine(path.join(vendorDir, \"WriteZipToSetup.exe\"), null, [\"--copy-stub-resources\", filePath, stubExePath])\n    await this.packager.signIf(stubExePath)\n    log.debug({ file: filePath }, \"signing app executable\")\n    await this.packager.signIf(filePath)\n  }\n\n  async build(appOutDir: string, arch: Arch) {\n    const packager = this.packager\n    const version = packager.appInfo.version\n    const sanitizedName = sanitizeFileName(this.appName)\n\n    const setupFile = packager.expandArtifactNamePattern(this.options, \"exe\", arch, \"${productName} Setup ${version}.${ext}\")\n    const installerOutDir = path.join(this.outDir, `squirrel-windows${getArchSuffix(arch)}`)\n    const artifactPath = path.join(installerOutDir, setupFile)\n    const msiArtifactPath = path.join(installerOutDir, packager.expandArtifactNamePattern(this.options, \"msi\", arch, \"${productName} Setup ${version}.${ext}\"))\n\n    this.buildQueueManager.add(async () => {\n      await packager.info.emitArtifactBuildStarted({\n        targetPresentableName: \"Squirrel.Windows\",\n        file: artifactPath,\n        arch,\n      })\n      const distOptions = await this.computeEffectiveDistOptions(appOutDir, installerOutDir, setupFile)\n      await this.generateStubExecutableExe(appOutDir, distOptions.vendorDirectory!)\n      await createWindowsInstaller(distOptions)\n\n      await packager.signAndEditResources(artifactPath, arch, installerOutDir)\n\n      if (this.options.msi) {\n        await packager.signIf(msiArtifactPath)\n      }\n\n      const safeArtifactName = (ext: string) => `${sanitizedName}-Setup-${version}${getArchSuffix(arch)}.${ext}`\n\n      await packager.info.emitArtifactBuildCompleted({\n        file: artifactPath,\n        target: this,\n        arch,\n        safeArtifactName: safeArtifactName(\"exe\"),\n        packager: this.packager,\n      })\n\n      if (this.options.msi) {\n        await packager.info.emitArtifactCreated({\n          file: msiArtifactPath,\n          target: this,\n          arch,\n          safeArtifactName: safeArtifactName(\"msi\"),\n          packager: this.packager,\n        })\n      }\n\n      const packagePrefix = `${this.appName}-${convertVersion(version)}-`\n      await packager.info.emitArtifactCreated({\n        file: path.join(installerOutDir, `${packagePrefix}full.nupkg`),\n        target: this,\n        arch,\n        packager,\n      })\n      if (distOptions.remoteReleases != null) {\n        await packager.info.emitArtifactCreated({\n          file: path.join(installerOutDir, `${packagePrefix}delta.nupkg`),\n          target: this,\n          arch,\n          packager,\n        })\n      }\n\n      await packager.info.emitArtifactCreated({\n        file: path.join(installerOutDir, \"RELEASES\"),\n        target: this,\n        arch,\n        packager,\n      })\n    })\n    return Promise.resolve()\n  }\n\n  private get appName() {\n    return this.options.name || this.packager.appInfo.name\n  }\n\n  private get exeName() {\n    return this.packager.appInfo.productFilename || this.options.name || this.packager.appInfo.productName\n  }\n\n  private select7zipArch(vendorDirectory: string) {\n    // https://github.com/electron/windows-installer/blob/main/script/select-7z-arch.js\n    // Even if we're cross-compiling for a different arch like arm64,\n    // we still need to use the 7-Zip executable for the host arch\n    const resolvedArch = os.arch\n    fs.copyFileSync(path.join(vendorDirectory, `7z-${resolvedArch}.exe`), path.join(vendorDirectory, \"7z.exe\"))\n    fs.copyFileSync(path.join(vendorDirectory, `7z-${resolvedArch}.dll`), path.join(vendorDirectory, \"7z.dll\"))\n  }\n\n  private async createNuspecTemplateWithProjectUrl() {\n    const templatePath = path.resolve(__dirname, \"..\", \"template.nuspectemplate\")\n    const projectUrl = await this.packager.appInfo.computePackageUrl()\n    if (projectUrl != null) {\n      const nuspecTemplate = await this.packager.info.tempDirManager.getTempFile({ prefix: \"template\", suffix: \".nuspectemplate\" })\n      let templateContent = await fs.promises.readFile(templatePath, \"utf8\")\n      const searchString = \"<copyright><%- copyright %></copyright>\"\n      templateContent = templateContent.replace(searchString, `${searchString}\\n    <projectUrl>${projectUrl}</projectUrl>`)\n      await fs.promises.writeFile(nuspecTemplate, templateContent)\n      return nuspecTemplate\n    }\n    return templatePath\n  }\n\n  async computeEffectiveDistOptions(appDirectory: string, outputDirectory: string, setupFile: string): Promise<SquirrelOptions> {\n    const packager = this.packager\n    let iconUrl = this.options.iconUrl\n    if (iconUrl == null) {\n      const info = await packager.info.repositoryInfo\n      if (info != null) {\n        iconUrl = `https://github.com/${info.user}/${info.project}/blob/master/${packager.info.relativeBuildResourcesDirname}/icon.ico?raw=true`\n      }\n\n      if (iconUrl == null) {\n        throw new InvalidConfigurationError(\"squirrelWindows.iconUrl is not specified, please see https://www.electron.build/squirrel-windows#SquirrelWindowsOptions-iconUrl\")\n      }\n    }\n\n    checkConflictingOptions(this.options)\n    const appInfo = packager.appInfo\n    const options: SquirrelOptions = {\n      appDirectory: appDirectory,\n      outputDirectory: outputDirectory,\n      name: this.options.useAppIdAsId ? appInfo.id : this.appName,\n      title: appInfo.productName || appInfo.name,\n      version: appInfo.version,\n      description: appInfo.description,\n      exe: `${appInfo.productFilename || this.options.name || appInfo.productName}.exe`,\n      authors: appInfo.companyName || \"\",\n      nuspecTemplate: await this.createNuspecTemplateWithProjectUrl(),\n      iconUrl,\n      copyright: appInfo.copyright,\n      noMsi: !this.options.msi,\n      usePackageJson: false,\n    }\n\n    options.vendorDirectory = await this.prepareSignedVendorDirectory()\n    this.select7zipArch(options.vendorDirectory)\n    options.fixUpPaths = true\n    options.setupExe = setupFile\n    if (this.options.msi) {\n      options.setupMsi = setupFile.replace(\".exe\", \".msi\")\n    }\n\n    if (isEmptyOrSpaces(options.description)) {\n      options.description = this.options.name || appInfo.productName\n    }\n\n    if (options.remoteToken == null) {\n      options.remoteToken = process.env.GH_TOKEN || process.env.GITHUB_TOKEN\n    }\n\n    if (this.options.remoteReleases === true) {\n      const info = await packager.info.repositoryInfo\n      if (info == null) {\n        log.warn(\"remoteReleases set to true, but cannot get repository info\")\n      } else {\n        options.remoteReleases = `https://github.com/${info.user}/${info.project}`\n        log.info({ remoteReleases: options.remoteReleases }, `remoteReleases is set`)\n      }\n    } else if (typeof this.options.remoteReleases === \"string\" && !isEmptyOrSpaces(this.options.remoteReleases)) {\n      options.remoteReleases = this.options.remoteReleases\n    }\n\n    if (this.options.loadingGif) {\n      options.loadingGif = path.resolve(packager.projectDir, this.options.loadingGif)\n    } else {\n      const resourceList = await packager.resourceList\n      if (resourceList.includes(\"install-spinner.gif\")) {\n        options.loadingGif = path.join(packager.buildResourcesDir, \"install-spinner.gif\")\n      }\n    }\n\n    return options\n  }\n}\n\nfunction checkConflictingOptions(options: any) {\n  for (const name of [\"outputDirectory\", \"appDirectory\", \"exe\", \"fixUpPaths\", \"usePackageJson\", \"extraFileSpecs\", \"extraMetadataSpecs\", \"skipUpdateIcon\", \"setupExe\"]) {\n    if (name in options) {\n      throw new InvalidConfigurationError(`Option ${name} is ignored, do not specify it.`)\n    }\n  }\n\n  if (\"noMsi\" in options) {\n    log.warn(`noMsi is deprecated, please specify as \"msi\": true if you want to create an MSI installer`)\n    options.msi = !options.noMsi\n  }\n\n  const msi = options.msi\n  if (msi != null && typeof msi !== \"boolean\") {\n    throw new InvalidConfigurationError(`msi expected to be boolean value, but string '\"${msi}\"' was specified`)\n  }\n}\n"]}