app-builder-lib 21.1.6 → 22.2.0

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 (146) hide show
  1. package/electron-osx-sign/util-provisioning-profiles.js +17 -5
  2. package/out/appInfo.d.ts +10 -10
  3. package/out/asar/asar.js +3 -1
  4. package/out/asar/asar.js.map +1 -1
  5. package/out/asar/asarUtil.js +3 -1
  6. package/out/asar/asarUtil.js.map +1 -1
  7. package/out/asar/integrity.js +3 -1
  8. package/out/asar/integrity.js.map +1 -1
  9. package/out/asar/unpackDetector.js +3 -1
  10. package/out/asar/unpackDetector.js.map +1 -1
  11. package/out/codeSign/codesign.js +3 -1
  12. package/out/codeSign/codesign.js.map +1 -1
  13. package/out/codeSign/macCodeSign.js +3 -1
  14. package/out/codeSign/macCodeSign.js.map +1 -1
  15. package/out/codeSign/windowsCodeSign.js +7 -5
  16. package/out/codeSign/windowsCodeSign.js.map +1 -1
  17. package/out/electron/ElectronFramework.d.ts +1 -1
  18. package/out/electron/ElectronFramework.js +3 -1
  19. package/out/electron/ElectronFramework.js.map +1 -1
  20. package/out/electron/electronMac.js +52 -8
  21. package/out/electron/electronMac.js.map +1 -1
  22. package/out/electron/electronVersion.js +3 -1
  23. package/out/electron/electronVersion.js.map +1 -1
  24. package/out/fileMatcher.js +3 -1
  25. package/out/fileMatcher.js.map +1 -1
  26. package/out/fileTransformer.js +3 -1
  27. package/out/fileTransformer.js.map +1 -1
  28. package/out/forge-maker.js +3 -1
  29. package/out/forge-maker.js.map +1 -1
  30. package/out/frameworks/LibUiFramework.js +3 -1
  31. package/out/frameworks/LibUiFramework.js.map +1 -1
  32. package/out/linuxPackager.d.ts +1 -1
  33. package/out/macPackager.d.ts +2 -1
  34. package/out/macPackager.js +18 -8
  35. package/out/macPackager.js.map +1 -1
  36. package/out/options/SnapOptions.d.ts +5 -0
  37. package/out/options/linuxOptions.d.ts +4 -0
  38. package/out/options/pkgOptions.d.ts +4 -0
  39. package/out/packager.d.ts +11 -11
  40. package/out/packager.js +5 -3
  41. package/out/packager.js.map +1 -1
  42. package/out/platformPackager.d.ts +10 -10
  43. package/out/platformPackager.js +3 -1
  44. package/out/platformPackager.js.map +1 -1
  45. package/out/presets/rectCra.js +3 -1
  46. package/out/presets/rectCra.js.map +1 -1
  47. package/out/publish/PublishManager.d.ts +2 -0
  48. package/out/publish/PublishManager.js +5 -3
  49. package/out/publish/PublishManager.js.map +1 -1
  50. package/out/publish/SnapStorePublisher.js +3 -1
  51. package/out/publish/SnapStorePublisher.js.map +1 -1
  52. package/out/publish/s3/BaseS3Publisher.js +3 -1
  53. package/out/publish/s3/BaseS3Publisher.js.map +1 -1
  54. package/out/publish/updateInfoBuilder.js +4 -2
  55. package/out/publish/updateInfoBuilder.js.map +1 -1
  56. package/out/remoteBuilder/ProjectInfoManager.js +3 -1
  57. package/out/remoteBuilder/ProjectInfoManager.js.map +1 -1
  58. package/out/remoteBuilder/RemoteBuilder.js +4 -2
  59. package/out/remoteBuilder/RemoteBuilder.js.map +1 -1
  60. package/out/remoteBuilder/builder-cli.js +4 -2
  61. package/out/remoteBuilder/builder-cli.js.map +1 -1
  62. package/out/targets/AppImageTarget.js +4 -2
  63. package/out/targets/AppImageTarget.js.map +1 -1
  64. package/out/targets/AppxTarget.js +19 -3
  65. package/out/targets/AppxTarget.js.map +1 -1
  66. package/out/targets/ArchiveTarget.js +3 -1
  67. package/out/targets/ArchiveTarget.js.map +1 -1
  68. package/out/targets/LinuxTargetHelper.d.ts +2 -2
  69. package/out/targets/LinuxTargetHelper.js +8 -2
  70. package/out/targets/LinuxTargetHelper.js.map +1 -1
  71. package/out/targets/MsiTarget.js +5 -3
  72. package/out/targets/MsiTarget.js.map +1 -1
  73. package/out/targets/archive.js +3 -1
  74. package/out/targets/archive.js.map +1 -1
  75. package/out/targets/differentialUpdateInfoBuilder.js +4 -2
  76. package/out/targets/differentialUpdateInfoBuilder.js.map +1 -1
  77. package/out/targets/fpm.js +5 -3
  78. package/out/targets/fpm.js.map +1 -1
  79. package/out/targets/nsis/NsisTarget.d.ts +5 -5
  80. package/out/targets/nsis/NsisTarget.js +24 -11
  81. package/out/targets/nsis/NsisTarget.js.map +1 -1
  82. package/out/targets/nsis/WebInstallerTarget.d.ts +2 -2
  83. package/out/targets/nsis/nsisLang.js +3 -1
  84. package/out/targets/nsis/nsisLang.js.map +1 -1
  85. package/out/targets/nsis/nsisLicense.js +3 -1
  86. package/out/targets/nsis/nsisLicense.js.map +1 -1
  87. package/out/targets/nsis/nsisOptions.d.ts +4 -0
  88. package/out/targets/nsis/nsisUtil.d.ts +3 -0
  89. package/out/targets/nsis/nsisUtil.js +195 -4
  90. package/out/targets/nsis/nsisUtil.js.map +1 -1
  91. package/out/targets/pkg.js +15 -2
  92. package/out/targets/pkg.js.map +1 -1
  93. package/out/targets/snap.js +10 -3
  94. package/out/targets/snap.js.map +1 -1
  95. package/out/targets/targetFactory.d.ts +1 -1
  96. package/out/targets/targetUtil.js +3 -1
  97. package/out/targets/targetUtil.js.map +1 -1
  98. package/out/util/AppFileWalker.js +3 -1
  99. package/out/util/AppFileWalker.js.map +1 -1
  100. package/out/util/NodeModuleCopyHelper.js +3 -1
  101. package/out/util/NodeModuleCopyHelper.js.map +1 -1
  102. package/out/util/appBuilder.js +1 -1
  103. package/out/util/appBuilder.js.map +1 -1
  104. package/out/util/appFileCopier.js +15 -18
  105. package/out/util/appFileCopier.js.map +1 -1
  106. package/out/util/bundledTool.js +1 -1
  107. package/out/util/bundledTool.js.map +1 -1
  108. package/out/util/cacheManager.js +3 -1
  109. package/out/util/cacheManager.js.map +1 -1
  110. package/out/util/config.js +4 -2
  111. package/out/util/config.js.map +1 -1
  112. package/out/util/filter.js +3 -1
  113. package/out/util/filter.js.map +1 -1
  114. package/out/util/hash.js +1 -1
  115. package/out/util/hash.js.map +1 -1
  116. package/out/util/license.js +3 -1
  117. package/out/util/license.js.map +1 -1
  118. package/out/util/macosVersion.js +3 -1
  119. package/out/util/macosVersion.js.map +1 -1
  120. package/out/util/packageMetadata.js +3 -1
  121. package/out/util/packageMetadata.js.map +1 -1
  122. package/out/util/pathManager.js +3 -1
  123. package/out/util/pathManager.js.map +1 -1
  124. package/out/util/repositoryInfo.js +3 -1
  125. package/out/util/repositoryInfo.js.map +1 -1
  126. package/out/util/yarn.js +14 -4
  127. package/out/util/yarn.js.map +1 -1
  128. package/out/vm/WineVm.js +3 -1
  129. package/out/vm/WineVm.js.map +1 -1
  130. package/out/vm/vm.d.ts +1 -1
  131. package/out/vm/vm.js +3 -1
  132. package/out/vm/vm.js.map +1 -1
  133. package/out/winPackager.d.ts +2 -2
  134. package/out/winPackager.js +4 -2
  135. package/out/winPackager.js.map +1 -1
  136. package/package.json +9 -9
  137. package/scheme.json +155 -1
  138. package/templates/linux/after-install.tpl +4 -1
  139. package/templates/nsis/assistedInstaller.nsh +6 -0
  140. package/templates/nsis/common.nsh +16 -7
  141. package/templates/nsis/include/extractAppPackage.nsh +46 -12
  142. package/templates/nsis/include/installer.nsh +43 -28
  143. package/templates/nsis/include/webPackage.nsh +19 -7
  144. package/templates/nsis/messages.yml +1 -1
  145. package/templates/nsis/multiUser.nsh +1 -1
  146. package/templates/nsis/portable.nsi +48 -11
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/targets/nsis/nsisLicense.ts"],"names":[],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;AAEO,eAAe,kBAAf,CAAkC,QAAlC,EAAyD,OAAzD,EAA+E,eAA/E,EAAqH,SAArH,EAA6I;AAClJ,QAAM,OAAO,GAAG,MAAM,2CAA2B,OAAO,CAAC,OAAnC,EAA4C,QAA5C,CAAtB;;AACA,MAAI,OAAO,IAAI,IAAf,EAAqB;AACnB,QAAI,WAAJ;;AACA,QAAI,OAAO,CAAC,QAAR,CAAiB,OAAjB,CAAJ,EAA+B;AAC7B,MAAA,WAAW,GAAG,CACZ,kDADY,EAEZ,sBAFY,EAGZ,0CAHY,EAIZ,2BAJY,EAKZ,+DALY,EAMZ,aANY,EAQZ,kCAAkC,IAAI,CAAC,IAAL,CAAU,4BAAV,EAA4B,mBAA5B,CAAgD,GARtE,CAAd;AAUD,KAXD,MAYK;AACH,MAAA,WAAW,GAAG,CAAC,kCAAkC,OAAO,GAA1C,CAAd;AACD;;AAED,IAAA,eAAe,CAAC,KAAhB,CAAsB,aAAtB,EAAqC,WAArC;;AACA,QAAI,OAAO,CAAC,QAAR,CAAiB,OAAjB,CAAJ,EAA+B;AAC7B,MAAA,eAAe,CAAC,KAAhB,CAAsB,iBAAtB,EAAyC,CAAC,0CAA0C,OAAO,GAAlD,CAAzC;AACD;;AACD;AACD;;AAED,QAAM,YAAY,GAAG,MAAM,gCAAgB,QAAhB,CAA3B;;AACA,MAAI,YAAY,CAAC,MAAb,KAAwB,CAA5B,EAA+B;AAC7B;AACD;;AAED,QAAM,WAAW,GAAkB,EAAnC;AACA,QAAM,gBAAgB,GAAG,IAAI,GAAJ,CAAQ,SAAR,CAAzB;AAEA,MAAI,WAAW,GAAkB,IAAjC;;AACA,OAAK,MAAM,IAAX,IAAmB,YAAnB,EAAiC;AAC/B,IAAA,gBAAgB,CAAC,MAAjB,CAAwB,IAAI,CAAC,cAA7B;;AACA,QAAI,WAAW,IAAI,IAAnB,EAAyB;AACvB,MAAA,WAAW,GAAG,IAAI,CAAC,IAAnB;AACD;;AACD,IAAA,WAAW,CAAC,IAAZ,CAAiB,gCAAgC,cAAK,IAAI,CAAC,cAAV,KAA6B,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,GAArG;AACD;;AAED,OAAK,MAAM,CAAX,IAAgB,gBAAhB,EAAkC;AAChC,IAAA,WAAW,CAAC,IAAZ,CAAiB,gCAAgC,cAAK,CAAL,CAAO,KAAK,WAAW,GAAxE;AACD;;AAED,EAAA,WAAW,CAAC,IAAZ,CAAiB,+CAAjB;AACA,EAAA,eAAe,CAAC,KAAhB,CAAsB,aAAtB,EAAqC,WAArC;AACD,C","sourcesContent":["import { lcid } from \"../../util/langs\"\nimport { getLicenseFiles, getNotLocalizedLicenseFile } from \"../../util/license\"\nimport * as path from \"path\"\nimport { WinPackager } from \"../../winPackager\"\nimport { NsisOptions } from \"./nsisOptions\"\nimport { NsisScriptGenerator } from \"./nsisScriptGenerator\"\nimport { nsisTemplatesDir } from \"./nsisUtil\"\n\nexport async function computeLicensePage(packager: WinPackager, options: NsisOptions, scriptGenerator: NsisScriptGenerator, languages: Array<string>): Promise<void> {\n const license = await getNotLocalizedLicenseFile(options.license, packager)\n if (license != null) {\n let licensePage: Array<string>\n if (license.endsWith(\".html\")) {\n licensePage = [\n \"!define MUI_PAGE_CUSTOMFUNCTION_SHOW LicenseShow\",\n \"Function LicenseShow\",\n \" FindWindow $R0 `#32770` `` $HWNDPARENT\",\n \" GetDlgItem $R0 $R0 1000\",\n \"EmbedHTML::Load /replace $R0 file://$PLUGINSDIR\\\\license.html\",\n \"FunctionEnd\",\n\n `!insertmacro MUI_PAGE_LICENSE \"${path.join(nsisTemplatesDir, \"empty-license.txt\")}\"`,\n ]\n }\n else {\n licensePage = [`!insertmacro MUI_PAGE_LICENSE \"${license}\"`]\n }\n\n scriptGenerator.macro(\"licensePage\", licensePage)\n if (license.endsWith(\".html\")) {\n scriptGenerator.macro(\"addLicenseFiles\", [`File /oname=$PLUGINSDIR\\\\license.html \"${license}\"`])\n }\n return\n }\n\n const licenseFiles = await getLicenseFiles(packager)\n if (licenseFiles.length === 0) {\n return\n }\n\n const licensePage: Array<string> = []\n const unspecifiedLangs = new Set(languages)\n\n let defaultFile: string | null = null\n for (const item of licenseFiles) {\n unspecifiedLangs.delete(item.langWithRegion)\n if (defaultFile == null) {\n defaultFile = item.file\n }\n licensePage.push(`LicenseLangString MUILicense ${lcid[item.langWithRegion] || item.lang} \"${item.file}\"`)\n }\n\n for (const l of unspecifiedLangs) {\n licensePage.push(`LicenseLangString MUILicense ${lcid[l]} \"${defaultFile}\"`)\n }\n\n licensePage.push('!insertmacro MUI_PAGE_LICENSE \"$(MUILicense)\"')\n scriptGenerator.macro(\"licensePage\", licensePage)\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../../src/targets/nsis/nsisLicense.ts"],"names":[],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAEO,eAAe,kBAAf,CAAkC,QAAlC,EAAyD,OAAzD,EAA+E,eAA/E,EAAqH,SAArH,EAA6I;AAClJ,QAAM,OAAO,GAAG,MAAM,2CAA2B,OAAO,CAAC,OAAnC,EAA4C,QAA5C,CAAtB;;AACA,MAAI,OAAO,IAAI,IAAf,EAAqB;AACnB,QAAI,WAAJ;;AACA,QAAI,OAAO,CAAC,QAAR,CAAiB,OAAjB,CAAJ,EAA+B;AAC7B,MAAA,WAAW,GAAG,CACZ,kDADY,EAEZ,sBAFY,EAGZ,0CAHY,EAIZ,2BAJY,EAKZ,+DALY,EAMZ,aANY,EAQZ,kCAAkC,IAAI,CAAC,IAAL,CAAU,4BAAV,EAA4B,mBAA5B,CAAgD,GARtE,CAAd;AAUD,KAXD,MAYK;AACH,MAAA,WAAW,GAAG,CAAC,kCAAkC,OAAO,GAA1C,CAAd;AACD;;AAED,IAAA,eAAe,CAAC,KAAhB,CAAsB,aAAtB,EAAqC,WAArC;;AACA,QAAI,OAAO,CAAC,QAAR,CAAiB,OAAjB,CAAJ,EAA+B;AAC7B,MAAA,eAAe,CAAC,KAAhB,CAAsB,iBAAtB,EAAyC,CAAC,0CAA0C,OAAO,GAAlD,CAAzC;AACD;;AACD;AACD;;AAED,QAAM,YAAY,GAAG,MAAM,gCAAgB,QAAhB,CAA3B;;AACA,MAAI,YAAY,CAAC,MAAb,KAAwB,CAA5B,EAA+B;AAC7B;AACD;;AAED,QAAM,WAAW,GAAkB,EAAnC;AACA,QAAM,gBAAgB,GAAG,IAAI,GAAJ,CAAQ,SAAR,CAAzB;AAEA,MAAI,WAAW,GAAkB,IAAjC;;AACA,OAAK,MAAM,IAAX,IAAmB,YAAnB,EAAiC;AAC/B,IAAA,gBAAgB,CAAC,MAAjB,CAAwB,IAAI,CAAC,cAA7B;;AACA,QAAI,WAAW,IAAI,IAAnB,EAAyB;AACvB,MAAA,WAAW,GAAG,IAAI,CAAC,IAAnB;AACD;;AACD,IAAA,WAAW,CAAC,IAAZ,CAAiB,gCAAgC,cAAK,IAAI,CAAC,cAAV,KAA6B,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,GAArG;AACD;;AAED,OAAK,MAAM,CAAX,IAAgB,gBAAhB,EAAkC;AAChC,IAAA,WAAW,CAAC,IAAZ,CAAiB,gCAAgC,cAAK,CAAL,CAAO,KAAK,WAAW,GAAxE;AACD;;AAED,EAAA,WAAW,CAAC,IAAZ,CAAiB,+CAAjB;AACA,EAAA,eAAe,CAAC,KAAhB,CAAsB,aAAtB,EAAqC,WAArC;AACD,C","sourcesContent":["import { lcid } from \"../../util/langs\"\nimport { getLicenseFiles, getNotLocalizedLicenseFile } from \"../../util/license\"\nimport * as path from \"path\"\nimport { WinPackager } from \"../../winPackager\"\nimport { NsisOptions } from \"./nsisOptions\"\nimport { NsisScriptGenerator } from \"./nsisScriptGenerator\"\nimport { nsisTemplatesDir } from \"./nsisUtil\"\n\nexport async function computeLicensePage(packager: WinPackager, options: NsisOptions, scriptGenerator: NsisScriptGenerator, languages: Array<string>): Promise<void> {\n const license = await getNotLocalizedLicenseFile(options.license, packager)\n if (license != null) {\n let licensePage: Array<string>\n if (license.endsWith(\".html\")) {\n licensePage = [\n \"!define MUI_PAGE_CUSTOMFUNCTION_SHOW LicenseShow\",\n \"Function LicenseShow\",\n \" FindWindow $R0 `#32770` `` $HWNDPARENT\",\n \" GetDlgItem $R0 $R0 1000\",\n \"EmbedHTML::Load /replace $R0 file://$PLUGINSDIR\\\\license.html\",\n \"FunctionEnd\",\n\n `!insertmacro MUI_PAGE_LICENSE \"${path.join(nsisTemplatesDir, \"empty-license.txt\")}\"`,\n ]\n }\n else {\n licensePage = [`!insertmacro MUI_PAGE_LICENSE \"${license}\"`]\n }\n\n scriptGenerator.macro(\"licensePage\", licensePage)\n if (license.endsWith(\".html\")) {\n scriptGenerator.macro(\"addLicenseFiles\", [`File /oname=$PLUGINSDIR\\\\license.html \"${license}\"`])\n }\n return\n }\n\n const licenseFiles = await getLicenseFiles(packager)\n if (licenseFiles.length === 0) {\n return\n }\n\n const licensePage: Array<string> = []\n const unspecifiedLangs = new Set(languages)\n\n let defaultFile: string | null = null\n for (const item of licenseFiles) {\n unspecifiedLangs.delete(item.langWithRegion)\n if (defaultFile == null) {\n defaultFile = item.file\n }\n licensePage.push(`LicenseLangString MUILicense ${lcid[item.langWithRegion] || item.lang} \"${item.file}\"`)\n }\n\n for (const l of unspecifiedLangs) {\n licensePage.push(`LicenseLangString MUILicense ${lcid[l]} \"${defaultFile}\"`)\n }\n\n licensePage.push('!insertmacro MUI_PAGE_LICENSE \"$(MUILicense)\"')\n scriptGenerator.macro(\"licensePage\", licensePage)\n}\n"],"sourceRoot":""}
@@ -156,6 +156,10 @@ export interface PortableOptions extends TargetSpecificOptions, CommonNsisOption
156
156
  * Defaults to [uuid](https://github.com/segmentio/ksuid) of build (changed on each build of portable executable).
157
157
  */
158
158
  readonly unpackDirName?: string;
159
+ /**
160
+ * The image to show while the portable executable is extracting. This image must be a bitmap (`.bmp`) image.
161
+ */
162
+ readonly splashImage?: string | null;
159
163
  }
160
164
  /**
161
165
  * Web Installer options.
@@ -18,3 +18,6 @@ export declare class CopyElevateHelper {
18
18
  private readonly copied;
19
19
  copy(appOutDir: string, target: NsisTarget): Promise<any>;
20
20
  }
21
+ export declare class UninstallerReader {
22
+ static exec(installerPath: string, uninstallerPath: string): void;
23
+ }
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.CopyElevateHelper = exports.AppPackageHelper = exports.NSIS_PATH = exports.nsisTemplatesDir = void 0;
6
+ exports.UninstallerReader = exports.CopyElevateHelper = exports.AppPackageHelper = exports.NSIS_PATH = exports.nsisTemplatesDir = void 0;
7
7
 
8
8
  function _bluebirdLst() {
9
9
  const data = _interopRequireDefault(require("bluebird-lst"));
@@ -77,7 +77,21 @@ function _pathManager() {
77
77
  return data;
78
78
  }
79
79
 
80
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
80
+ var _fs2 = _interopRequireDefault(require("fs"));
81
+
82
+ function _zlib() {
83
+ const data = _interopRequireDefault(require("zlib"));
84
+
85
+ _zlib = function () {
86
+ return data;
87
+ };
88
+
89
+ return data;
90
+ }
91
+
92
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
93
+
94
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
81
95
 
82
96
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
83
97
 
@@ -91,7 +105,7 @@ const NSIS_PATH = new (_lazyVal().Lazy)(() => {
91
105
  } // noinspection SpellCheckingInspection
92
106
 
93
107
 
94
- return (0, _binDownload().getBinFromUrl)("nsis", "3.0.3.2", "tUrlDPQtbjcooNbTrjUzLupttWlATLDNWqK57TVr+gAt3wkaxFxBS3k80AzEFJbmSeOWrUooO72FFOVGXcoxhA==");
108
+ return (0, _binDownload().getBinFromUrl)("nsis", "3.0.4.1", "VKMiizYdmNdJOWpRGz4trl4lD++BvYP2irAXpMilheUP0pc93iKlWAoP843Vlraj8YG19CVn0j+dCo/hURz9+Q==");
95
109
  });
96
110
  exports.NSIS_PATH = NSIS_PATH;
97
111
 
@@ -187,6 +201,183 @@ class CopyElevateHelper {
187
201
  return promise;
188
202
  }
189
203
 
190
- } exports.CopyElevateHelper = CopyElevateHelper;
204
+ }
205
+
206
+ exports.CopyElevateHelper = CopyElevateHelper;
207
+
208
+ class BinaryReader {
209
+ constructor(buffer) {
210
+ this._buffer = buffer;
211
+ this._position = 0;
212
+ }
213
+
214
+ get length() {
215
+ return this._buffer.length;
216
+ }
217
+
218
+ get position() {
219
+ return this._position;
220
+ }
221
+
222
+ match(signature) {
223
+ if (signature.every((v, i) => this._buffer[this._position + i] === v)) {
224
+ this._position += signature.length;
225
+ return true;
226
+ }
227
+
228
+ return false;
229
+ }
230
+
231
+ skip(offset) {
232
+ this._position += offset;
233
+ }
234
+
235
+ bytes(size) {
236
+ const value = this._buffer.subarray(this._position, this._position + size);
237
+
238
+ this._position += size;
239
+ return value;
240
+ }
241
+
242
+ uint16() {
243
+ const value = this._buffer[this._position] | this._buffer[this._position + 1] << 8;
244
+ this._position += 2;
245
+ return value;
246
+ }
247
+
248
+ uint32() {
249
+ return this.uint16() | this.uint16() << 16;
250
+ }
251
+
252
+ string(length) {
253
+ let value = "";
254
+
255
+ for (let i = 0; i < length; i++) {
256
+ const c = this._buffer[this._position + i];
257
+
258
+ if (c === 0x00) {
259
+ break;
260
+ }
261
+
262
+ value += String.fromCharCode(c);
263
+ }
264
+
265
+ this._position += length;
266
+ return value;
267
+ }
268
+
269
+ }
270
+
271
+ class UninstallerReader {
272
+ // noinspection SpellCheckingInspection
273
+ static exec(installerPath, uninstallerPath) {
274
+ const buffer = _fs2.default.readFileSync(installerPath);
275
+
276
+ const reader = new BinaryReader(buffer); // IMAGE_DOS_HEADER
277
+
278
+ if (!reader.match([0x4D, 0x5A])) {
279
+ throw new Error("Invalid 'MZ' signature.");
280
+ }
281
+
282
+ reader.skip(58); // e_lfanew
283
+
284
+ reader.skip(reader.uint32() - reader.position); // IMAGE_FILE_HEADER
285
+
286
+ if (!reader.match([0x50, 0x45, 0x00, 0x00])) {
287
+ throw new Error("Invalid 'PE' signature.");
288
+ }
289
+
290
+ reader.skip(2);
291
+ const numberOfSections = reader.uint16();
292
+ reader.skip(12);
293
+ const sizeOfOptionalHeader = reader.uint16();
294
+ reader.skip(2);
295
+ reader.skip(sizeOfOptionalHeader); // IMAGE_SECTION_HEADER
296
+
297
+ let nsisOffset = 0;
298
+
299
+ for (let i = 0; i < numberOfSections; i++) {
300
+ const name = reader.string(8);
301
+ reader.skip(8);
302
+ const rawSize = reader.uint32();
303
+ const rawPointer = reader.uint32();
304
+ reader.skip(16);
305
+
306
+ switch (name) {
307
+ case ".text":
308
+ case ".rdata":
309
+ case ".data":
310
+ case ".rsrc":
311
+ {
312
+ nsisOffset = Math.max(rawPointer + rawSize, nsisOffset);
313
+ break;
314
+ }
315
+
316
+ default:
317
+ {
318
+ if (rawPointer !== 0 && rawSize !== 0) {
319
+ throw new Error("Unsupported section '" + name + "'.");
320
+ }
321
+
322
+ break;
323
+ }
324
+ }
325
+ }
326
+
327
+ const executable = buffer.subarray(0, nsisOffset);
328
+ const nsisSize = buffer.length - nsisOffset;
329
+ const nsisReader = new BinaryReader(buffer.subarray(nsisOffset, nsisOffset + nsisSize));
330
+ const nsisSignature = [0xEF, 0xBE, 0xAD, 0xDE, 0x4E, 0x75, 0x6C, 0x6C, 0x73, 0x6F, 0x66, 0x74, 0x49, 0x6E, 0x73, 0x74];
331
+ nsisReader.uint32(); // ?
332
+
333
+ if (!nsisReader.match(nsisSignature)) {
334
+ throw new Error("Invalid signature.");
335
+ }
336
+
337
+ nsisReader.uint32(); // ?
338
+
339
+ if (nsisSize !== nsisReader.uint32()) {
340
+ throw new Error("Size mismatch.");
341
+ }
342
+
343
+ let innerBuffer = null;
344
+
345
+ while (true) {
346
+ let size = nsisReader.uint32();
347
+ const compressed = (size & 0x80000000) !== 0;
348
+ size = size & 0x7FFFFFFF;
349
+
350
+ if (size === 0 || nsisReader.position + size > nsisReader.length || nsisReader.position >= nsisReader.length) {
351
+ break;
352
+ }
353
+
354
+ let buffer = nsisReader.bytes(size);
355
+
356
+ if (compressed) {
357
+ buffer = _zlib().default.inflateRawSync(buffer);
358
+ }
359
+
360
+ const innerReader = new BinaryReader(buffer);
361
+ innerReader.uint32(); // ?
362
+
363
+ if (innerReader.match(nsisSignature)) {
364
+ if (innerBuffer) {
365
+ throw new Error("Multiple inner blocks.");
366
+ }
367
+
368
+ innerBuffer = buffer;
369
+ }
370
+ }
371
+
372
+ if (!innerBuffer) {
373
+ throw new Error("Inner block not found.");
374
+ }
375
+
376
+ _fs2.default.writeFileSync(uninstallerPath, executable);
377
+
378
+ _fs2.default.appendFileSync(uninstallerPath, innerBuffer);
379
+ }
380
+
381
+ } exports.UninstallerReader = UninstallerReader;
191
382
  // __ts-babel@6.0.4
192
383
  //# sourceMappingURL=nsisUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/targets/nsis/nsisUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { Arch, log } from \"builder-util\"\nimport { PackageFileInfo } from \"builder-util-runtime\"\nimport { getBinFromUrl } from \"../../binDownload\"\nimport { copyFile } from \"builder-util/out/fs\"\nimport { unlink } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { getTemplatePath } from \"../../util/pathManager\"\nimport { NsisTarget } from \"./NsisTarget\"\n\nexport const nsisTemplatesDir = getTemplatePath(\"nsis\")\n\nexport const NSIS_PATH = new Lazy(() => {\n const custom = process.env.ELECTRON_BUILDER_NSIS_DIR\n if (custom != null && custom.length > 0) {\n return Promise.resolve(custom.trim())\n }\n // noinspection SpellCheckingInspection\n return getBinFromUrl(\"nsis\", \"3.0.3.2\", \"tUrlDPQtbjcooNbTrjUzLupttWlATLDNWqK57TVr+gAt3wkaxFxBS3k80AzEFJbmSeOWrUooO72FFOVGXcoxhA==\")\n})\n\nexport class AppPackageHelper {\n private readonly archToFileInfo = new Map<Arch, Promise<PackageFileInfo>>()\n private readonly infoToIsDelete = new Map<PackageFileInfo, boolean>()\n\n /** @private */\n refCount = 0\n\n constructor(private readonly elevateHelper: CopyElevateHelper) {\n }\n\n async packArch(arch: Arch, target: NsisTarget): Promise<PackageFileInfo> {\n let infoPromise = this.archToFileInfo.get(arch)\n if (infoPromise == null) {\n const appOutDir = target.archs.get(arch)!\n infoPromise = this.elevateHelper.copy(appOutDir, target)\n .then(() => target.buildAppPackage(appOutDir, arch))\n this.archToFileInfo.set(arch, infoPromise)\n }\n\n const info = await infoPromise\n if (target.isWebInstaller) {\n this.infoToIsDelete.set(info, false)\n }\n else if (!this.infoToIsDelete.has(info)) {\n this.infoToIsDelete.set(info, true)\n }\n return info\n }\n\n async finishBuild(): Promise<any> {\n if (--this.refCount > 0) {\n return\n }\n\n const filesToDelete: Array<string> = []\n for (const [info, isDelete] of this.infoToIsDelete.entries()) {\n if (isDelete) {\n filesToDelete.push(info.path)\n }\n }\n\n await BluebirdPromise.map(filesToDelete, it => unlink(it))\n }\n}\n\nexport class CopyElevateHelper {\n private readonly copied = new Map<string, Promise<any>>()\n\n copy(appOutDir: string, target: NsisTarget): Promise<any> {\n if (!target.packager.info.framework.isCopyElevateHelper) {\n return Promise.resolve()\n }\n\n let isPackElevateHelper = target.options.packElevateHelper\n if (isPackElevateHelper === false && target.options.perMachine === true) {\n isPackElevateHelper = true\n log.warn(\"`packElevateHelper = false` is ignored, because `perMachine` is set to `true`\")\n }\n\n if (isPackElevateHelper === false) {\n return Promise.resolve()\n }\n\n let promise = this.copied.get(appOutDir)\n if (promise != null) {\n return promise\n }\n\n promise = NSIS_PATH.value\n .then(it => {\n const outFile = path.join(appOutDir, \"resources\", \"elevate.exe\")\n const promise = copyFile(path.join(it, \"elevate.exe\"), outFile, false)\n if (target.packager.platformSpecificBuildOptions.signAndEditExecutable !== false) {\n return promise.then(() => target.packager.sign(outFile))\n }\n return promise\n })\n this.copied.set(appOutDir, promise)\n return promise\n }\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../../src/targets/nsis/nsisUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import BluebirdPromise from \"bluebird-lst\"\nimport { Arch, log } from \"builder-util\"\nimport { PackageFileInfo } from \"builder-util-runtime\"\nimport { getBinFromUrl } from \"../../binDownload\"\nimport { copyFile } from \"builder-util/out/fs\"\nimport { unlink } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { getTemplatePath } from \"../../util/pathManager\"\nimport { NsisTarget } from \"./NsisTarget\"\nimport fs from \"fs\"\nimport zlib from \"zlib\"\n\nexport const nsisTemplatesDir = getTemplatePath(\"nsis\")\n\nexport const NSIS_PATH = new Lazy(() => {\n const custom = process.env.ELECTRON_BUILDER_NSIS_DIR\n if (custom != null && custom.length > 0) {\n return Promise.resolve(custom.trim())\n }\n // noinspection SpellCheckingInspection\n return getBinFromUrl(\"nsis\", \"3.0.4.1\", \"VKMiizYdmNdJOWpRGz4trl4lD++BvYP2irAXpMilheUP0pc93iKlWAoP843Vlraj8YG19CVn0j+dCo/hURz9+Q==\")\n})\n\nexport class AppPackageHelper {\n private readonly archToFileInfo = new Map<Arch, Promise<PackageFileInfo>>()\n private readonly infoToIsDelete = new Map<PackageFileInfo, boolean>()\n\n /** @private */\n refCount = 0\n\n constructor(private readonly elevateHelper: CopyElevateHelper) {\n }\n\n async packArch(arch: Arch, target: NsisTarget): Promise<PackageFileInfo> {\n let infoPromise = this.archToFileInfo.get(arch)\n if (infoPromise == null) {\n const appOutDir = target.archs.get(arch)!\n infoPromise = this.elevateHelper.copy(appOutDir, target)\n .then(() => target.buildAppPackage(appOutDir, arch))\n this.archToFileInfo.set(arch, infoPromise)\n }\n\n const info = await infoPromise\n if (target.isWebInstaller) {\n this.infoToIsDelete.set(info, false)\n }\n else if (!this.infoToIsDelete.has(info)) {\n this.infoToIsDelete.set(info, true)\n }\n return info\n }\n\n async finishBuild(): Promise<any> {\n if (--this.refCount > 0) {\n return\n }\n\n const filesToDelete: Array<string> = []\n for (const [info, isDelete] of this.infoToIsDelete.entries()) {\n if (isDelete) {\n filesToDelete.push(info.path)\n }\n }\n\n await BluebirdPromise.map(filesToDelete, it => unlink(it))\n }\n}\n\nexport class CopyElevateHelper {\n private readonly copied = new Map<string, Promise<any>>()\n\n copy(appOutDir: string, target: NsisTarget): Promise<any> {\n if (!target.packager.info.framework.isCopyElevateHelper) {\n return Promise.resolve()\n }\n\n let isPackElevateHelper = target.options.packElevateHelper\n if (isPackElevateHelper === false && target.options.perMachine === true) {\n isPackElevateHelper = true\n log.warn(\"`packElevateHelper = false` is ignored, because `perMachine` is set to `true`\")\n }\n\n if (isPackElevateHelper === false) {\n return Promise.resolve()\n }\n\n let promise = this.copied.get(appOutDir)\n if (promise != null) {\n return promise\n }\n\n promise = NSIS_PATH.value\n .then(it => {\n const outFile = path.join(appOutDir, \"resources\", \"elevate.exe\")\n const promise = copyFile(path.join(it, \"elevate.exe\"), outFile, false)\n if (target.packager.platformSpecificBuildOptions.signAndEditExecutable !== false) {\n return promise.then(() => target.packager.sign(outFile))\n }\n return promise\n })\n this.copied.set(appOutDir, promise)\n return promise\n }\n}\n\nclass BinaryReader {\n private readonly _buffer: Buffer\n private _position: number\n\n constructor(buffer: Buffer) {\n this._buffer = buffer\n this._position = 0\n }\n\n get length(): number {\n return this._buffer.length\n }\n\n get position(): number {\n return this._position\n }\n\n match(signature: Array<number>): boolean {\n if (signature.every((v, i) => this._buffer[this._position + i] === v)) {\n this._position += signature.length\n return true\n }\n return false\n }\n\n skip(offset: number) {\n this._position += offset\n }\n\n bytes(size: number): Buffer {\n const value = this._buffer.subarray(this._position, this._position + size)\n this._position += size\n return value\n }\n\n uint16(): number {\n const value = this._buffer[this._position] | (this._buffer[this._position + 1] << 8)\n this._position += 2\n return value\n }\n\n uint32(): number {\n return this.uint16() | (this.uint16() << 16)\n }\n\n string(length: number): string {\n let value = \"\"\n for (let i = 0; i < length; i++) {\n const c = this._buffer[this._position + i]\n if (c === 0x00) {\n break\n }\n value += String.fromCharCode(c)\n }\n this._position += length\n return value\n }\n}\n\nexport class UninstallerReader {\n // noinspection SpellCheckingInspection\n static exec(installerPath: string, uninstallerPath: string) {\n const buffer = fs.readFileSync(installerPath)\n const reader = new BinaryReader(buffer)\n // IMAGE_DOS_HEADER\n if (!reader.match([ 0x4D, 0x5A ])) {\n throw new Error(\"Invalid 'MZ' signature.\")\n }\n reader.skip(58)\n // e_lfanew\n reader.skip(reader.uint32() - reader.position)\n // IMAGE_FILE_HEADER\n if (!reader.match([ 0x50, 0x45, 0x00, 0x00 ])) {\n throw new Error(\"Invalid 'PE' signature.\")\n }\n reader.skip(2)\n const numberOfSections = reader.uint16()\n reader.skip(12)\n const sizeOfOptionalHeader = reader.uint16()\n reader.skip(2)\n reader.skip(sizeOfOptionalHeader)\n // IMAGE_SECTION_HEADER\n let nsisOffset = 0\n for (let i = 0; i < numberOfSections; i++) {\n const name = reader.string(8)\n reader.skip(8)\n const rawSize = reader.uint32()\n const rawPointer = reader.uint32()\n reader.skip(16)\n switch (name) {\n case \".text\":\n case \".rdata\":\n case \".data\":\n case \".rsrc\": {\n nsisOffset = Math.max(rawPointer + rawSize, nsisOffset)\n break\n }\n default: {\n if (rawPointer !== 0 && rawSize !== 0) {\n throw new Error(\"Unsupported section '\" + name + \"'.\")\n }\n break\n }\n }\n }\n const executable = buffer.subarray(0, nsisOffset)\n const nsisSize = buffer.length - nsisOffset\n const nsisReader = new BinaryReader(buffer.subarray(nsisOffset, nsisOffset + nsisSize))\n const nsisSignature = [ 0xEF, 0xBE, 0xAD, 0xDE, 0x4E, 0x75, 0x6C, 0x6C, 0x73, 0x6F, 0x66, 0x74, 0x49, 0x6E, 0x73, 0x74 ]\n nsisReader.uint32() // ?\n if (!nsisReader.match(nsisSignature)) {\n throw new Error(\"Invalid signature.\")\n }\n nsisReader.uint32() // ?\n if (nsisSize !== nsisReader.uint32()) {\n throw new Error(\"Size mismatch.\")\n }\n\n let innerBuffer = null\n while (true) {\n let size = nsisReader.uint32()\n const compressed = (size & 0x80000000) !== 0\n size = size & 0x7FFFFFFF\n if (size === 0 || (nsisReader.position + size) > nsisReader.length || nsisReader.position >= nsisReader.length) {\n break\n }\n let buffer = nsisReader.bytes(size)\n if (compressed) {\n buffer = zlib.inflateRawSync(buffer)\n }\n const innerReader = new BinaryReader(buffer)\n innerReader.uint32() // ?\n if (innerReader.match(nsisSignature)) {\n if (innerBuffer) {\n throw new Error(\"Multiple inner blocks.\")\n }\n innerBuffer = buffer\n }\n }\n if (!innerBuffer) {\n throw new Error(\"Inner block not found.\")\n }\n fs.writeFileSync(uninstallerPath, executable)\n fs.appendFileSync(uninstallerPath, innerBuffer)\n }\n}\n"],"sourceRoot":""}
@@ -88,7 +88,9 @@ function _core() {
88
88
  return data;
89
89
  }
90
90
 
91
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
91
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
92
+
93
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
92
94
 
93
95
  const certType = "Developer ID Installer"; // http://www.shanekirk.com/2013/10/creating-flat-packages-in-osx/
94
96
  // to use --scripts, we must build .app bundle separately using pkgbuild
@@ -148,6 +150,17 @@ class PkgTarget extends _core().Target {
148
150
  });
149
151
  const options = this.options;
150
152
  let distInfo = await (0, _fsExtra().readFile)(distInfoFile, "utf-8");
153
+
154
+ if (options.mustClose != null && options.mustClose.length !== 0) {
155
+ const startContent = ` <pkg-ref id="${this.packager.appInfo.id}">\n <must-close>\n`;
156
+ const endContent = " </must-close>\n </pkg-ref>\n</installer-gui-script>";
157
+ let mustCloseContent = "";
158
+ options.mustClose.forEach(appId => {
159
+ mustCloseContent += ` <app id="${appId}"/>\n`;
160
+ });
161
+ distInfo = distInfo.replace("</installer-gui-script>", `${startContent}${mustCloseContent}${endContent}`);
162
+ }
163
+
151
164
  const insertIndex = distInfo.lastIndexOf("</installer-gui-script>");
152
165
  distInfo = distInfo.substring(0, insertIndex) + ` <domains enable_anywhere="${options.allowAnywhere}" enable_currentUserHome="${options.allowCurrentUserHome}" enable_localSystem="${options.allowRootDirectory}" />\n` + distInfo.substring(insertIndex);
153
166
 
@@ -190,7 +203,7 @@ class PkgTarget extends _core().Target {
190
203
 
191
204
  await (0, _builderUtil().exec)("pkgbuild", ["--analyze", "--root", rootPath, propertyListOutputFile]); // process the template plist
192
205
 
193
- const plistInfo = (await (0, _appBuilder().executeAppBuilderAsJson)(["decode-plist", "-f", propertyListOutputFile]))[0];
206
+ const plistInfo = (await (0, _appBuilder().executeAppBuilderAsJson)(["decode-plist", "-f", propertyListOutputFile]))[0].filter(it => it.RootRelativeBundlePath !== "Electron.dSYM");
194
207
 
195
208
  if (plistInfo.length > 0) {
196
209
  const packageInfo = plistInfo[0]; // ChildBundles lists all of electron binaries within the .app.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/targets/pkg.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, debug, exec, use } from \"builder-util\"\nimport { statOrNull } from \"builder-util/out/fs\"\nimport { executeAppBuilderAndWriteJson, executeAppBuilderAsJson } from \"../util/appBuilder\"\nimport { getNotLocalizedLicenseFile } from \"../util/license\"\nimport { readFile, unlink, writeFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { PkgOptions } from \"..\"\nimport { filterCFBundleIdentifier } from \"../appInfo\"\nimport { findIdentity, Identity } from \"../codeSign/macCodeSign\"\nimport { Target } from \"../core\"\nimport MacPackager from \"../macPackager\"\n\nconst certType = \"Developer ID Installer\"\n\n// http://www.shanekirk.com/2013/10/creating-flat-packages-in-osx/\n// to use --scripts, we must build .app bundle separately using pkgbuild\n// productbuild --scripts doesn't work (because scripts in this case not added to our package)\n// https://github.com/electron-userland/electron-osx-sign/issues/96#issuecomment-274986942\nexport class PkgTarget extends Target {\n readonly options: PkgOptions = {\n allowAnywhere: true,\n allowCurrentUserHome: true,\n allowRootDirectory: true,\n ...this.packager.config.pkg,\n }\n\n constructor(private readonly packager: MacPackager, readonly outDir: string) {\n super(\"pkg\")\n }\n\n async build(appPath: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const options = this.options\n const appInfo = packager.appInfo\n\n // pkg doesn't like not ASCII symbols (Could not open package to list files: /Volumes/test/t-gIjdGK/test-project-0/dist/Test App ßW-1.1.0.pkg)\n const artifactName = packager.expandArtifactNamePattern(options, \"pkg\")\n const artifactPath = path.join(this.outDir, artifactName)\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: \"pkg\",\n file: artifactPath,\n arch,\n })\n\n const keychainFile = (await packager.codeSigningInfo.value).keychainFile\n\n const appOutDir = this.outDir\n // https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html\n const distInfoFile = path.join(appOutDir, \"distribution.xml\")\n\n const innerPackageFile = path.join(appOutDir, `${filterCFBundleIdentifier(appInfo.id)}.pkg`)\n const componentPropertyListFile = path.join(appOutDir, `${filterCFBundleIdentifier(appInfo.id)}.plist`)\n const identity = (await Promise.all([\n findIdentity(certType, options.identity || packager.platformSpecificBuildOptions.identity, keychainFile),\n this.customizeDistributionConfiguration(distInfoFile, appPath),\n this.buildComponentPackage(appPath, componentPropertyListFile, innerPackageFile),\n ]))[0]\n\n if (identity == null && packager.forceCodeSigning) {\n throw new Error(`Cannot find valid \"${certType}\" to sign standalone installer, please see https://electron.build/code-signing`)\n }\n\n const args = prepareProductBuildArgs(identity, keychainFile)\n args.push(\"--distribution\", distInfoFile)\n args.push(artifactPath)\n use(options.productbuild, it => args.push(...it as any))\n await exec(\"productbuild\", args, {\n cwd: appOutDir,\n })\n await Promise.all([unlink(innerPackageFile), unlink(distInfoFile)])\n\n await packager.dispatchArtifactCreated(artifactPath, this, arch, packager.computeSafeArtifactName(artifactName, \"pkg\", arch))\n }\n\n private async customizeDistributionConfiguration(distInfoFile: string, appPath: string) {\n await exec(\"productbuild\", [\"--synthesize\", \"--component\", appPath, distInfoFile], {\n cwd: this.outDir,\n })\n\n const options = this.options\n let distInfo = await readFile(distInfoFile, \"utf-8\")\n const insertIndex = distInfo.lastIndexOf(\"</installer-gui-script>\")\n distInfo = distInfo.substring(0, insertIndex) + ` <domains enable_anywhere=\"${options.allowAnywhere}\" enable_currentUserHome=\"${options.allowCurrentUserHome}\" enable_localSystem=\"${options.allowRootDirectory}\" />\\n` + distInfo.substring(insertIndex)\n\n if (options.background != null) {\n const background = await this.packager.getResource(options.background.file)\n if (background != null) {\n const alignment = options.background.alignment || \"center\"\n // noinspection SpellCheckingInspection\n const scaling = options.background.scaling || \"tofit\"\n distInfo = distInfo.substring(0, insertIndex) + ` <background file=\"${background}\" alignment=\"${alignment}\" scaling=\"${scaling}\"/>\\n` + distInfo.substring(insertIndex)\n }\n }\n\n const welcome = await this.packager.getResource(options.welcome)\n if (welcome != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <welcome file=\"${welcome}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n const license = await getNotLocalizedLicenseFile(options.license, this.packager)\n if (license != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <license file=\"${license}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n const conclusion = await this.packager.getResource(options.conclusion)\n if (conclusion != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <conclusion file=\"${conclusion}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n debug(distInfo)\n await writeFile(distInfoFile, distInfo)\n }\n\n private async buildComponentPackage(appPath: string, propertyListOutputFile: string, packageOutputFile: string) {\n const options = this.options\n const rootPath = path.dirname(appPath)\n\n // first produce a component plist template\n await exec(\"pkgbuild\", [\n \"--analyze\",\n \"--root\", rootPath,\n propertyListOutputFile,\n ])\n\n // process the template plist\n const plistInfo = (await executeAppBuilderAsJson<Array<any>>([\"decode-plist\", \"-f\", propertyListOutputFile]))[0]\n if (plistInfo.length > 0) {\n const packageInfo = plistInfo[0]\n\n // ChildBundles lists all of electron binaries within the .app.\n // There is no particular reason for removing that key, except to be as close as possible to\n // the PackageInfo generated by previous versions of electron-builder.\n delete packageInfo.ChildBundles\n\n if (options.isRelocatable != null) {\n packageInfo.BundleIsRelocatable = options.isRelocatable\n }\n\n if (options.isVersionChecked != null) {\n packageInfo.BundleIsVersionChecked = options.isVersionChecked\n }\n\n if (options.hasStrictIdentifier != null) {\n packageInfo.BundleHasStrictIdentifier = options.hasStrictIdentifier\n }\n\n if (options.overwriteAction != null) {\n packageInfo.BundleOverwriteAction = options.overwriteAction\n }\n\n await executeAppBuilderAndWriteJson([\"encode-plist\"], {[propertyListOutputFile]: plistInfo})\n }\n\n // now build the package\n const args = [\n \"--root\", rootPath,\n \"--component-plist\", propertyListOutputFile,\n ]\n\n use(this.options.installLocation || \"/Applications\", it => args.push(\"--install-location\", it!))\n if (options.scripts != null) {\n args.push(\"--scripts\", path.resolve(this.packager.info.buildResourcesDir, options.scripts))\n }\n else if (options.scripts !== null) {\n const dir = path.join(this.packager.info.buildResourcesDir, \"pkg-scripts\")\n const stat = await statOrNull(dir)\n if (stat != null && stat.isDirectory()) {\n args.push(\"--scripts\", dir)\n }\n }\n\n args.push(packageOutputFile)\n\n await exec(\"pkgbuild\", args)\n }\n}\n\nexport function prepareProductBuildArgs(identity: Identity | null, keychain: string | null | undefined): Array<string> {\n const args: Array<string> = []\n if (identity != null) {\n args.push(\"--sign\", identity.hash)\n if (keychain != null) {\n args.push(\"--keychain\", keychain)\n }\n }\n return args\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/targets/pkg.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, debug, exec, use } from \"builder-util\"\nimport { statOrNull } from \"builder-util/out/fs\"\nimport { executeAppBuilderAndWriteJson, executeAppBuilderAsJson } from \"../util/appBuilder\"\nimport { getNotLocalizedLicenseFile } from \"../util/license\"\nimport { readFile, unlink, writeFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { PkgOptions } from \"..\"\nimport { filterCFBundleIdentifier } from \"../appInfo\"\nimport { findIdentity, Identity } from \"../codeSign/macCodeSign\"\nimport { Target } from \"../core\"\nimport MacPackager from \"../macPackager\"\n\nconst certType = \"Developer ID Installer\"\n\n// http://www.shanekirk.com/2013/10/creating-flat-packages-in-osx/\n// to use --scripts, we must build .app bundle separately using pkgbuild\n// productbuild --scripts doesn't work (because scripts in this case not added to our package)\n// https://github.com/electron-userland/electron-osx-sign/issues/96#issuecomment-274986942\nexport class PkgTarget extends Target {\n readonly options: PkgOptions = {\n allowAnywhere: true,\n allowCurrentUserHome: true,\n allowRootDirectory: true,\n ...this.packager.config.pkg,\n }\n\n constructor(private readonly packager: MacPackager, readonly outDir: string) {\n super(\"pkg\")\n }\n\n async build(appPath: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const options = this.options\n const appInfo = packager.appInfo\n\n // pkg doesn't like not ASCII symbols (Could not open package to list files: /Volumes/test/t-gIjdGK/test-project-0/dist/Test App ßW-1.1.0.pkg)\n const artifactName = packager.expandArtifactNamePattern(options, \"pkg\")\n const artifactPath = path.join(this.outDir, artifactName)\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: \"pkg\",\n file: artifactPath,\n arch,\n })\n\n const keychainFile = (await packager.codeSigningInfo.value).keychainFile\n\n const appOutDir = this.outDir\n // https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html\n const distInfoFile = path.join(appOutDir, \"distribution.xml\")\n\n const innerPackageFile = path.join(appOutDir, `${filterCFBundleIdentifier(appInfo.id)}.pkg`)\n const componentPropertyListFile = path.join(appOutDir, `${filterCFBundleIdentifier(appInfo.id)}.plist`)\n const identity = (await Promise.all([\n findIdentity(certType, options.identity || packager.platformSpecificBuildOptions.identity, keychainFile),\n this.customizeDistributionConfiguration(distInfoFile, appPath),\n this.buildComponentPackage(appPath, componentPropertyListFile, innerPackageFile),\n ]))[0]\n\n if (identity == null && packager.forceCodeSigning) {\n throw new Error(`Cannot find valid \"${certType}\" to sign standalone installer, please see https://electron.build/code-signing`)\n }\n\n const args = prepareProductBuildArgs(identity, keychainFile)\n args.push(\"--distribution\", distInfoFile)\n args.push(artifactPath)\n use(options.productbuild, it => args.push(...it as any))\n await exec(\"productbuild\", args, {\n cwd: appOutDir,\n })\n await Promise.all([unlink(innerPackageFile), unlink(distInfoFile)])\n\n await packager.dispatchArtifactCreated(artifactPath, this, arch, packager.computeSafeArtifactName(artifactName, \"pkg\", arch))\n }\n\n private async customizeDistributionConfiguration(distInfoFile: string, appPath: string) {\n await exec(\"productbuild\", [\"--synthesize\", \"--component\", appPath, distInfoFile], {\n cwd: this.outDir,\n })\n\n const options = this.options\n let distInfo = await readFile(distInfoFile, \"utf-8\")\n\n if (options.mustClose != null && options.mustClose.length !== 0) {\n const startContent = ` <pkg-ref id=\"${this.packager.appInfo.id}\">\\n <must-close>\\n`\n const endContent = \" </must-close>\\n </pkg-ref>\\n</installer-gui-script>\"\n let mustCloseContent = \"\"\n options.mustClose.forEach(appId => {\n mustCloseContent += ` <app id=\"${appId}\"/>\\n`\n })\n distInfo = distInfo.replace(\"</installer-gui-script>\", `${startContent}${mustCloseContent}${endContent}`)\n }\n\n const insertIndex = distInfo.lastIndexOf(\"</installer-gui-script>\")\n distInfo = distInfo.substring(0, insertIndex) + ` <domains enable_anywhere=\"${options.allowAnywhere}\" enable_currentUserHome=\"${options.allowCurrentUserHome}\" enable_localSystem=\"${options.allowRootDirectory}\" />\\n` + distInfo.substring(insertIndex)\n\n if (options.background != null) {\n const background = await this.packager.getResource(options.background.file)\n if (background != null) {\n const alignment = options.background.alignment || \"center\"\n // noinspection SpellCheckingInspection\n const scaling = options.background.scaling || \"tofit\"\n distInfo = distInfo.substring(0, insertIndex) + ` <background file=\"${background}\" alignment=\"${alignment}\" scaling=\"${scaling}\"/>\\n` + distInfo.substring(insertIndex)\n }\n }\n\n const welcome = await this.packager.getResource(options.welcome)\n if (welcome != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <welcome file=\"${welcome}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n const license = await getNotLocalizedLicenseFile(options.license, this.packager)\n if (license != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <license file=\"${license}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n const conclusion = await this.packager.getResource(options.conclusion)\n if (conclusion != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <conclusion file=\"${conclusion}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n debug(distInfo)\n await writeFile(distInfoFile, distInfo)\n }\n\n private async buildComponentPackage(appPath: string, propertyListOutputFile: string, packageOutputFile: string) {\n const options = this.options\n const rootPath = path.dirname(appPath)\n\n // first produce a component plist template\n await exec(\"pkgbuild\", [\n \"--analyze\",\n \"--root\", rootPath,\n propertyListOutputFile,\n ])\n\n // process the template plist\n const plistInfo = (await executeAppBuilderAsJson<Array<any>>([\"decode-plist\", \"-f\", propertyListOutputFile]))[0].filter((it: any) => it.RootRelativeBundlePath !== \"Electron.dSYM\")\n if (plistInfo.length > 0) {\n const packageInfo = plistInfo[0]\n\n // ChildBundles lists all of electron binaries within the .app.\n // There is no particular reason for removing that key, except to be as close as possible to\n // the PackageInfo generated by previous versions of electron-builder.\n delete packageInfo.ChildBundles\n\n if (options.isRelocatable != null) {\n packageInfo.BundleIsRelocatable = options.isRelocatable\n }\n\n if (options.isVersionChecked != null) {\n packageInfo.BundleIsVersionChecked = options.isVersionChecked\n }\n\n if (options.hasStrictIdentifier != null) {\n packageInfo.BundleHasStrictIdentifier = options.hasStrictIdentifier\n }\n\n if (options.overwriteAction != null) {\n packageInfo.BundleOverwriteAction = options.overwriteAction\n }\n\n await executeAppBuilderAndWriteJson([\"encode-plist\"], {[propertyListOutputFile]: plistInfo})\n }\n\n // now build the package\n const args = [\n \"--root\", rootPath,\n \"--component-plist\", propertyListOutputFile,\n ]\n\n use(this.options.installLocation || \"/Applications\", it => args.push(\"--install-location\", it!))\n if (options.scripts != null) {\n args.push(\"--scripts\", path.resolve(this.packager.info.buildResourcesDir, options.scripts))\n }\n else if (options.scripts !== null) {\n const dir = path.join(this.packager.info.buildResourcesDir, \"pkg-scripts\")\n const stat = await statOrNull(dir)\n if (stat != null && stat.isDirectory()) {\n args.push(\"--scripts\", dir)\n }\n }\n\n args.push(packageOutputFile)\n\n await exec(\"pkgbuild\", args)\n }\n}\n\nexport function prepareProductBuildArgs(identity: Identity | null, keychain: string | null | undefined): Array<string> {\n const args: Array<string> = []\n if (identity != null) {\n args.push(\"--sign\", identity.hash)\n if (keychain != null) {\n args.push(\"--keychain\", keychain)\n }\n }\n return args\n}\n"],"sourceRoot":""}
@@ -87,7 +87,9 @@ function _targetUtil() {
87
87
  return data;
88
88
  }
89
89
 
90
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
90
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
91
+
92
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
91
93
 
92
94
  const defaultPlugs = ["desktop", "desktop-legacy", "home", "x11", "wayland", "unity7", "browser-support", "network", "gsettings", "pulseaudio", "opengl"];
93
95
 
@@ -97,7 +99,7 @@ class SnapTarget extends _core().Target {
97
99
  this.packager = packager;
98
100
  this.helper = helper;
99
101
  this.outDir = outDir;
100
- this.options = Object.assign({}, this.packager.platformSpecificBuildOptions, this.packager.config[this.name]);
102
+ this.options = Object.assign(Object.assign({}, this.packager.platformSpecificBuildOptions), this.packager.config[this.name]);
101
103
  this.isUseTemplateApp = false;
102
104
  }
103
105
 
@@ -164,6 +166,10 @@ class SnapTarget extends _core().Target {
164
166
  }
165
167
  });
166
168
 
169
+ if (options.autoStart) {
170
+ appDescriptor.autostart = `${snap.name}.desktop`;
171
+ }
172
+
167
173
  if (options.confinement === "classic") {
168
174
  delete appDescriptor.plugs;
169
175
  delete snap.plugs;
@@ -261,6 +267,7 @@ class SnapTarget extends _core().Target {
261
267
  return;
262
268
  }
263
269
 
270
+ console.log(JSON.stringify(snap, null, 2));
264
271
  await (0, _fsExtra().outputFile)(path.join(snapMetaDir, this.isUseTemplateApp ? "snap.yaml" : "snapcraft.yaml"), (0, _builderUtil().serializeToYaml)(snap));
265
272
  const hooksDir = await packager.getResource(options.hooks, "snap-hooks");
266
273
 
@@ -286,7 +293,7 @@ class SnapTarget extends _core().Target {
286
293
  }
287
294
 
288
295
  isElectronVersionGreaterOrEqualThen(version) {
289
- return semver().gte(this.packager.config.electronVersion || "5.0.3", version);
296
+ return semver().gte(this.packager.config.electronVersion || "7.0.0", version);
290
297
  }
291
298
 
292
299
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/targets/snap.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, deepAssign, executeAppBuilder, InvalidConfigurationError, log, replaceDefault as _replaceDefault, serializeToYaml, toLinuxArchString } from \"builder-util\"\nimport { asArray } from \"builder-util-runtime\"\nimport { outputFile, readFile } from \"fs-extra\"\nimport { safeLoad } from \"js-yaml\"\nimport * as path from \"path\"\nimport * as semver from \"semver\"\nimport { SnapOptions } from \"..\"\nimport { Target } from \"../core\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { PlugDescriptor } from \"../options/SnapOptions\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { LinuxTargetHelper } from \"./LinuxTargetHelper\"\nimport { createStageDirPath } from \"./targetUtil\"\n\nconst defaultPlugs = [\"desktop\", \"desktop-legacy\", \"home\", \"x11\", \"wayland\", \"unity7\", \"browser-support\", \"network\", \"gsettings\", \"pulseaudio\", \"opengl\"]\n\nexport default class SnapTarget extends Target {\n readonly options: SnapOptions = {...this.packager.platformSpecificBuildOptions, ...(this.packager.config as any)[this.name]}\n\n public isUseTemplateApp = false\n\n constructor(name: string, private readonly packager: LinuxPackager, private readonly helper: LinuxTargetHelper, readonly outDir: string) {\n super(name)\n }\n\n private replaceDefault(inList: Array<string> | null | undefined, defaultList: Array<string>) {\n const result = _replaceDefault(inList, defaultList)\n if (result !== defaultList) {\n this.isUseTemplateApp = false\n }\n return result\n }\n\n private async createDescriptor(arch: Arch): Promise<any> {\n if (!this.isElectronVersionGreaterOrEqualThen(\"4.0.0\")) {\n if (!this.isElectronVersionGreaterOrEqualThen(\"2.0.0-beta.1\")) {\n throw new InvalidConfigurationError(\"Electron 2 and higher is required to build Snap\")\n }\n\n log.warn(\"Electron 4 and higher is highly recommended for Snap\")\n }\n\n const appInfo = this.packager.appInfo\n const snapName = this.packager.executableName.toLowerCase()\n const options = this.options\n\n const plugs = normalizePlugConfiguration(this.options.plugs)\n\n const plugNames = this.replaceDefault(plugs == null ? null : Object.getOwnPropertyNames(plugs), defaultPlugs)\n const buildPackages = asArray(options.buildPackages)\n const defaultStagePackages = getDefaultStagePackages()\n const stagePackages = this.replaceDefault(options.stagePackages, defaultStagePackages)\n\n this.isUseTemplateApp = this.options.useTemplateApp !== false &&\n (arch === Arch.x64 || arch === Arch.armv7l) &&\n buildPackages.length === 0 &&\n isArrayEqualRegardlessOfSort(stagePackages, defaultStagePackages)\n\n const appDescriptor: any = {\n command: \"command.sh\",\n plugs: plugNames,\n adapter: \"none\",\n }\n\n const snap: any = safeLoad(await readFile(path.join(getTemplatePath(\"snap\"), \"snapcraft.yaml\"), \"utf-8\"))\n if (this.isUseTemplateApp) {\n delete appDescriptor.adapter\n }\n if (options.grade != null) {\n snap.grade = options.grade\n }\n if (options.confinement != null) {\n snap.confinement = options.confinement\n }\n deepAssign(snap, {\n name: snapName,\n version: appInfo.version,\n summary: options.summary || appInfo.productName,\n description: this.helper.getDescription(options),\n architectures: [toLinuxArchString(arch, \"snap\")],\n apps: {\n [snapName]: appDescriptor\n },\n parts: {\n app: {\n \"stage-packages\": stagePackages,\n }\n },\n })\n\n if (options.confinement === \"classic\") {\n delete appDescriptor.plugs\n delete snap.plugs\n }\n else {\n const archTriplet = archNameToTriplet(arch)\n appDescriptor.environment = {\n // https://github.com/electron-userland/electron-builder/issues/4007\n // https://github.com/electron/electron/issues/9056\n DISABLE_WAYLAND: \"1\",\n TMPDIR: \"$XDG_RUNTIME_DIR\",\n PATH: \"$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH\",\n SNAP_DESKTOP_RUNTIME: \"$SNAP/gnome-platform\",\n LD_LIBRARY_PATH: [\n \"$SNAP_LIBRARY_PATH\",\n \"$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/\" + archTriplet + \":$SNAP/usr/lib/\" + archTriplet,\n \"$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib\",\n \"$SNAP/lib/\" + archTriplet + \":$SNAP/usr/lib/\" + archTriplet\n ].join(\":\"),\n ...options.environment,\n }\n\n if (plugs != null) {\n for (const plugName of plugNames) {\n const plugOptions = plugs[plugName]\n if (plugOptions == null) {\n continue\n }\n\n snap.plugs[plugName] = plugOptions\n }\n }\n }\n\n if (buildPackages.length > 0) {\n snap.parts.app[\"build-packages\"] = buildPackages\n }\n if (options.after != null) {\n snap.parts.app.after = options.after\n }\n\n if (options.assumes != null) {\n snap.assumes = asArray(options.assumes)\n }\n\n return snap\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const options = this.options\n // tslint:disable-next-line:no-invalid-template-strings\n const artifactName = packager.expandArtifactNamePattern(this.options, \"snap\", arch, \"${name}_${version}_${arch}.${ext}\", false)\n const artifactPath = path.join(this.outDir, artifactName)\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: \"snap\",\n file: artifactPath,\n arch,\n })\n\n const snap = await this.createDescriptor(arch)\n if (this.isUseTemplateApp) {\n delete snap.parts\n }\n\n const stageDir = await createStageDirPath(this, packager, arch)\n const snapArch = toLinuxArchString(arch, \"snap\")\n const args = [\n \"snap\",\n \"--app\", appOutDir,\n \"--stage\", stageDir,\n \"--arch\", snapArch,\n \"--output\", artifactPath,\n \"--executable\", this.packager.executableName,\n ]\n\n await this.helper.icons\n if (this.helper.maxIconPath != null) {\n if (!this.isUseTemplateApp) {\n snap.icon = \"snap/gui/icon.png\"\n }\n args.push(\"--icon\", this.helper.maxIconPath)\n }\n\n // snapcraft.yaml inside a snap directory\n const snapMetaDir = path.join(stageDir, this.isUseTemplateApp ? \"meta\" : \"snap\")\n const desktopFile = path.join(snapMetaDir, \"gui\", `${snap.name}.desktop`)\n await this.helper.writeDesktopEntry(this.options, packager.executableName, desktopFile, {\n // tslint:disable:no-invalid-template-strings\n Icon: \"${SNAP}/meta/gui/icon.png\"\n })\n\n if (this.isElectronVersionGreaterOrEqualThen(\"5.0.0\") && !isBrowserSandboxAllowed(snap)) {\n args.push(\"--extraAppArgs=--no-sandbox\")\n if (this.isUseTemplateApp) {\n args.push(\"--exclude\", \"chrome-sandbox\")\n }\n }\n\n if (packager.packagerOptions.effectiveOptionComputed != null && await packager.packagerOptions.effectiveOptionComputed({snap, desktopFile, args})) {\n return\n }\n\n await outputFile(path.join(snapMetaDir, this.isUseTemplateApp ? \"snap.yaml\" : \"snapcraft.yaml\"), serializeToYaml(snap))\n\n const hooksDir = await packager.getResource(options.hooks, \"snap-hooks\")\n if (hooksDir != null) {\n args.push(\"--hooks\", hooksDir)\n }\n\n if (this.isUseTemplateApp) {\n args.push(\"--template-url\", `electron4:${snapArch}`)\n }\n await executeAppBuilder(args)\n\n await packager.info.callArtifactBuildCompleted({\n file: artifactPath,\n safeArtifactName: packager.computeSafeArtifactName(artifactName, \"snap\", arch, false),\n target: this,\n arch,\n packager,\n publishConfig: options.publish == null ? {provider: \"snapStore\"} : null,\n })\n }\n\n private isElectronVersionGreaterOrEqualThen(version: string) {\n return semver.gte(this.packager.config.electronVersion || \"5.0.3\", version)\n }\n}\n\nfunction archNameToTriplet(arch: Arch): string {\n switch (arch) {\n case Arch.x64:\n return \"x86_64-linux-gnu\"\n case Arch.ia32:\n return \"i386-linux-gnu\"\n case Arch.armv7l:\n // noinspection SpellCheckingInspection\n return \"arm-linux-gnueabihf\"\n case Arch.arm64:\n return \"aarch64-linux-gnu\"\n\n default:\n throw new Error(`Unsupported arch ${arch}`)\n }\n}\n\nfunction isArrayEqualRegardlessOfSort(a: Array<string>, b: Array<string>) {\n a = a.slice()\n b = b.slice()\n a.sort()\n b.sort()\n return a.length === b.length && a.every((value, index) => value === b[index])\n}\n\nfunction normalizePlugConfiguration(raw: Array<string | PlugDescriptor> | PlugDescriptor | null | undefined): { [key: string]: {[name: string]: any; } | null } | null {\n if (raw == null) {\n return null\n }\n\n const result: any = {}\n for (const item of (Array.isArray(raw) ? raw : [raw])) {\n if (typeof item === \"string\") {\n result[item] = null\n }\n else {\n Object.assign(result, item)\n }\n }\n return result\n}\n\nfunction isBrowserSandboxAllowed(snap: any): boolean {\n if (snap.plugs != null) {\n for (const plugName of Object.keys(snap.plugs)) {\n const plug = snap.plugs[plugName]\n if (plug.interface === \"browser-support\" && plug[\"allow-sandbox\"] === true) {\n return true\n }\n }\n }\n return false\n}\n\nfunction getDefaultStagePackages() {\n // libxss1 - was \"error while loading shared libraries: libXss.so.1\" on Xubuntu 16.04\n // noinspection SpellCheckingInspection\n return [\"libnspr4\", \"libnss3\", \"libxss1\", \"libappindicator3-1\", \"libsecret-1-0\"]\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/targets/snap.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, deepAssign, executeAppBuilder, InvalidConfigurationError, log, replaceDefault as _replaceDefault, serializeToYaml, toLinuxArchString } from \"builder-util\"\nimport { asArray } from \"builder-util-runtime\"\nimport { outputFile, readFile } from \"fs-extra\"\nimport { safeLoad } from \"js-yaml\"\nimport * as path from \"path\"\nimport * as semver from \"semver\"\nimport { SnapOptions } from \"..\"\nimport { Target } from \"../core\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { PlugDescriptor } from \"../options/SnapOptions\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { LinuxTargetHelper } from \"./LinuxTargetHelper\"\nimport { createStageDirPath } from \"./targetUtil\"\n\nconst defaultPlugs = [\"desktop\", \"desktop-legacy\", \"home\", \"x11\", \"wayland\", \"unity7\", \"browser-support\", \"network\", \"gsettings\", \"pulseaudio\", \"opengl\"]\n\nexport default class SnapTarget extends Target {\n readonly options: SnapOptions = {...this.packager.platformSpecificBuildOptions, ...(this.packager.config as any)[this.name]}\n\n public isUseTemplateApp = false\n\n constructor(name: string, private readonly packager: LinuxPackager, private readonly helper: LinuxTargetHelper, readonly outDir: string) {\n super(name)\n }\n\n private replaceDefault(inList: Array<string> | null | undefined, defaultList: Array<string>) {\n const result = _replaceDefault(inList, defaultList)\n if (result !== defaultList) {\n this.isUseTemplateApp = false\n }\n return result\n }\n\n private async createDescriptor(arch: Arch): Promise<any> {\n if (!this.isElectronVersionGreaterOrEqualThen(\"4.0.0\")) {\n if (!this.isElectronVersionGreaterOrEqualThen(\"2.0.0-beta.1\")) {\n throw new InvalidConfigurationError(\"Electron 2 and higher is required to build Snap\")\n }\n\n log.warn(\"Electron 4 and higher is highly recommended for Snap\")\n }\n\n const appInfo = this.packager.appInfo\n const snapName = this.packager.executableName.toLowerCase()\n const options = this.options\n\n const plugs = normalizePlugConfiguration(this.options.plugs)\n\n const plugNames = this.replaceDefault(plugs == null ? null : Object.getOwnPropertyNames(plugs), defaultPlugs)\n const buildPackages = asArray(options.buildPackages)\n const defaultStagePackages = getDefaultStagePackages()\n const stagePackages = this.replaceDefault(options.stagePackages, defaultStagePackages)\n\n this.isUseTemplateApp = this.options.useTemplateApp !== false &&\n (arch === Arch.x64 || arch === Arch.armv7l) &&\n buildPackages.length === 0 &&\n isArrayEqualRegardlessOfSort(stagePackages, defaultStagePackages)\n\n const appDescriptor: any = {\n command: \"command.sh\",\n plugs: plugNames,\n adapter: \"none\",\n }\n\n const snap: any = safeLoad(await readFile(path.join(getTemplatePath(\"snap\"), \"snapcraft.yaml\"), \"utf-8\"))\n if (this.isUseTemplateApp) {\n delete appDescriptor.adapter\n }\n if (options.grade != null) {\n snap.grade = options.grade\n }\n if (options.confinement != null) {\n snap.confinement = options.confinement\n }\n deepAssign(snap, {\n name: snapName,\n version: appInfo.version,\n summary: options.summary || appInfo.productName,\n description: this.helper.getDescription(options),\n architectures: [toLinuxArchString(arch, \"snap\")],\n apps: {\n [snapName]: appDescriptor\n },\n parts: {\n app: {\n \"stage-packages\": stagePackages,\n }\n },\n })\n\n if (options.autoStart) {\n appDescriptor.autostart = `${snap.name}.desktop`\n }\n\n if (options.confinement === \"classic\") {\n delete appDescriptor.plugs\n delete snap.plugs\n }\n else {\n const archTriplet = archNameToTriplet(arch)\n appDescriptor.environment = {\n // https://github.com/electron-userland/electron-builder/issues/4007\n // https://github.com/electron/electron/issues/9056\n DISABLE_WAYLAND: \"1\",\n TMPDIR: \"$XDG_RUNTIME_DIR\",\n PATH: \"$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH\",\n SNAP_DESKTOP_RUNTIME: \"$SNAP/gnome-platform\",\n LD_LIBRARY_PATH: [\n \"$SNAP_LIBRARY_PATH\",\n \"$SNAP/lib:$SNAP/usr/lib:$SNAP/lib/\" + archTriplet + \":$SNAP/usr/lib/\" + archTriplet,\n \"$LD_LIBRARY_PATH:$SNAP/lib:$SNAP/usr/lib\",\n \"$SNAP/lib/\" + archTriplet + \":$SNAP/usr/lib/\" + archTriplet\n ].join(\":\"),\n ...options.environment,\n }\n\n if (plugs != null) {\n for (const plugName of plugNames) {\n const plugOptions = plugs[plugName]\n if (plugOptions == null) {\n continue\n }\n\n snap.plugs[plugName] = plugOptions\n }\n }\n }\n\n if (buildPackages.length > 0) {\n snap.parts.app[\"build-packages\"] = buildPackages\n }\n if (options.after != null) {\n snap.parts.app.after = options.after\n }\n\n if (options.assumes != null) {\n snap.assumes = asArray(options.assumes)\n }\n\n return snap\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const options = this.options\n // tslint:disable-next-line:no-invalid-template-strings\n const artifactName = packager.expandArtifactNamePattern(this.options, \"snap\", arch, \"${name}_${version}_${arch}.${ext}\", false)\n const artifactPath = path.join(this.outDir, artifactName)\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: \"snap\",\n file: artifactPath,\n arch,\n })\n\n const snap = await this.createDescriptor(arch)\n if (this.isUseTemplateApp) {\n delete snap.parts\n }\n\n const stageDir = await createStageDirPath(this, packager, arch)\n const snapArch = toLinuxArchString(arch, \"snap\")\n const args = [\n \"snap\",\n \"--app\", appOutDir,\n \"--stage\", stageDir,\n \"--arch\", snapArch,\n \"--output\", artifactPath,\n \"--executable\", this.packager.executableName,\n ]\n\n await this.helper.icons\n if (this.helper.maxIconPath != null) {\n if (!this.isUseTemplateApp) {\n snap.icon = \"snap/gui/icon.png\"\n }\n args.push(\"--icon\", this.helper.maxIconPath)\n }\n\n // snapcraft.yaml inside a snap directory\n const snapMetaDir = path.join(stageDir, this.isUseTemplateApp ? \"meta\" : \"snap\")\n const desktopFile = path.join(snapMetaDir, \"gui\", `${snap.name}.desktop`)\n await this.helper.writeDesktopEntry(this.options, packager.executableName, desktopFile, {\n // tslint:disable:no-invalid-template-strings\n Icon: \"${SNAP}/meta/gui/icon.png\"\n })\n\n if (this.isElectronVersionGreaterOrEqualThen(\"5.0.0\") && !isBrowserSandboxAllowed(snap)) {\n args.push(\"--extraAppArgs=--no-sandbox\")\n if (this.isUseTemplateApp) {\n args.push(\"--exclude\", \"chrome-sandbox\")\n }\n }\n\n if (packager.packagerOptions.effectiveOptionComputed != null && await packager.packagerOptions.effectiveOptionComputed({snap, desktopFile, args})) {\n return\n }\n\n console.log(JSON.stringify(snap, null, 2))\n await outputFile(path.join(snapMetaDir, this.isUseTemplateApp ? \"snap.yaml\" : \"snapcraft.yaml\"), serializeToYaml(snap))\n\n const hooksDir = await packager.getResource(options.hooks, \"snap-hooks\")\n if (hooksDir != null) {\n args.push(\"--hooks\", hooksDir)\n }\n\n if (this.isUseTemplateApp) {\n args.push(\"--template-url\", `electron4:${snapArch}`)\n }\n await executeAppBuilder(args)\n\n await packager.info.callArtifactBuildCompleted({\n file: artifactPath,\n safeArtifactName: packager.computeSafeArtifactName(artifactName, \"snap\", arch, false),\n target: this,\n arch,\n packager,\n publishConfig: options.publish == null ? {provider: \"snapStore\"} : null,\n })\n }\n\n private isElectronVersionGreaterOrEqualThen(version: string) {\n return semver.gte(this.packager.config.electronVersion || \"7.0.0\", version)\n }\n}\n\nfunction archNameToTriplet(arch: Arch): string {\n switch (arch) {\n case Arch.x64:\n return \"x86_64-linux-gnu\"\n case Arch.ia32:\n return \"i386-linux-gnu\"\n case Arch.armv7l:\n // noinspection SpellCheckingInspection\n return \"arm-linux-gnueabihf\"\n case Arch.arm64:\n return \"aarch64-linux-gnu\"\n\n default:\n throw new Error(`Unsupported arch ${arch}`)\n }\n}\n\nfunction isArrayEqualRegardlessOfSort(a: Array<string>, b: Array<string>) {\n a = a.slice()\n b = b.slice()\n a.sort()\n b.sort()\n return a.length === b.length && a.every((value, index) => value === b[index])\n}\n\nfunction normalizePlugConfiguration(raw: Array<string | PlugDescriptor> | PlugDescriptor | null | undefined): { [key: string]: {[name: string]: any; } | null } | null {\n if (raw == null) {\n return null\n }\n\n const result: any = {}\n for (const item of (Array.isArray(raw) ? raw : [raw])) {\n if (typeof item === \"string\") {\n result[item] = null\n }\n else {\n Object.assign(result, item)\n }\n }\n return result\n}\n\nfunction isBrowserSandboxAllowed(snap: any): boolean {\n if (snap.plugs != null) {\n for (const plugName of Object.keys(snap.plugs)) {\n const plug = snap.plugs[plugName]\n if (plug.interface === \"browser-support\" && plug[\"allow-sandbox\"] === true) {\n return true\n }\n }\n }\n return false\n}\n\nfunction getDefaultStagePackages() {\n // libxss1 - was \"error while loading shared libraries: libXss.so.1\" on Xubuntu 16.04\n // noinspection SpellCheckingInspection\n return [\"libnspr4\", \"libnss3\", \"libxss1\", \"libappindicator3-1\", \"libsecret-1-0\"]\n}\n"],"sourceRoot":""}
@@ -7,6 +7,6 @@ export declare function createCommonTarget(target: string, outDir: string, packa
7
7
  export declare class NoOpTarget extends Target {
8
8
  readonly options: null;
9
9
  constructor(name: string);
10
- readonly outDir: string;
10
+ get outDir(): string;
11
11
  build(appOutDir: string, arch: Arch): Promise<any>;
12
12
  }
@@ -30,7 +30,9 @@ function _builderUtil() {
30
30
  return data;
31
31
  }
32
32
 
33
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
33
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
34
+
35
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
34
36
 
35
37
  class StageDir {
36
38
  constructor(dir) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/targets/targetUtil.ts"],"names":[],"mappings":";;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;AAGM,MAAO,QAAP,CAAe;AACnB,EAAA,WAAA,CAAqB,GAArB,EAAgC;AAAX,SAAA,GAAA,GAAA,GAAA;AACpB;;AAED,EAAA,WAAW,CAAC,IAAD,EAAa;AACtB,WAAO,KAAK,GAAL,GAAW,IAAI,CAAC,GAAhB,GAAsB,IAA7B;AACD;;AAED,EAAA,OAAO,GAAA;AACL,QAAI,CAAC,qBAAM,OAAP,IAAkB,OAAO,CAAC,GAAR,CAAY,2CAAZ,KAA4D,MAAlF,EAA0F;AACxF,aAAO,uBAAO,KAAK,GAAZ,CAAP;AACD;;AACD,WAAO,OAAO,CAAC,OAAR,EAAP;AACD;;AAED,EAAA,QAAQ,GAAA;AACN,WAAO,KAAK,GAAZ;AACD;;AAjBkB;;;;AAoBd,eAAe,cAAf,CAA8B,MAA9B,EAA8C,QAA9C,EAA+E,IAA/E,EAAyF;AAC9F,SAAO,IAAI,QAAJ,EAAa,MAAM,kBAAkB,CAAC,MAAD,EAAS,QAAT,EAAmB,IAAnB,CAArC,EAAP;AACD;;AAEM,eAAe,kBAAf,CAAkC,MAAlC,EAAkD,QAAlD,EAAmF,IAAnF,EAA6F;AAClG,QAAM,OAAO,GAAG,QAAQ,CAAC,IAAT,CAAc,sBAAd,CAAqC,MAArC,EAA6C,QAA7C,EAAuD,IAAvD,CAAhB;AACA,QAAM,yBAAS,OAAT,CAAN;AACA,SAAO,OAAP;AACD,C,CAED;AACA;;;AACM,SAAU,6BAAV,CAAwC,OAAxC,EAA0D,qBAA1D,EAAwF;AAC5F,SAAO,qBAAqB,IAAI,sBAAsB,IAAtB,CAA2B,OAAO,CAAC,eAAnC,CAAzB,GAA+E,OAAO,CAAC,eAAvF,GAAyG,OAAO,CAAC,aAAxH;AACD,C","sourcesContent":["import { emptyDir, remove } from \"fs-extra\"\nimport * as path from \"path\"\nimport { Target, AppInfo } from \"../\"\nimport { Arch, debug } from \"builder-util\"\nimport { PlatformPackager } from \"../platformPackager\"\n\nexport class StageDir {\n constructor(readonly dir: string) {\n }\n\n getTempFile(name: string) {\n return this.dir + path.sep + name\n }\n\n cleanup() {\n if (!debug.enabled || process.env.ELECTRON_BUILDER_REMOVE_STAGE_EVEN_IF_DEBUG === \"true\") {\n return remove(this.dir)\n }\n return Promise.resolve()\n }\n\n toString() {\n return this.dir\n }\n}\n\nexport async function createStageDir(target: Target, packager: PlatformPackager<any>, arch: Arch): Promise<StageDir> {\n return new StageDir(await createStageDirPath(target, packager, arch))\n}\n\nexport async function createStageDirPath(target: Target, packager: PlatformPackager<any>, arch: Arch): Promise<string> {\n const tempDir = packager.info.stageDirPathCustomizer(target, packager, arch)\n await emptyDir(tempDir)\n return tempDir\n}\n\n// https://github.com/electron-userland/electron-builder/issues/3100\n// https://github.com/electron-userland/electron-builder/commit/2539cfba20dc639128e75c5b786651b652bb4b78\nexport function getWindowsInstallationDirName(appInfo: AppInfo, isTryToUseProductName: boolean): string {\n return isTryToUseProductName && /^[-_+0-9a-zA-Z .]+$/.test(appInfo.productFilename) ? appInfo.productFilename : appInfo.sanitizedName\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/targets/targetUtil.ts"],"names":[],"mappings":";;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAGM,MAAO,QAAP,CAAe;AACnB,EAAA,WAAA,CAAqB,GAArB,EAAgC;AAAX,SAAA,GAAA,GAAA,GAAA;AACpB;;AAED,EAAA,WAAW,CAAC,IAAD,EAAa;AACtB,WAAO,KAAK,GAAL,GAAW,IAAI,CAAC,GAAhB,GAAsB,IAA7B;AACD;;AAED,EAAA,OAAO,GAAA;AACL,QAAI,CAAC,qBAAM,OAAP,IAAkB,OAAO,CAAC,GAAR,CAAY,2CAAZ,KAA4D,MAAlF,EAA0F;AACxF,aAAO,uBAAO,KAAK,GAAZ,CAAP;AACD;;AACD,WAAO,OAAO,CAAC,OAAR,EAAP;AACD;;AAED,EAAA,QAAQ,GAAA;AACN,WAAO,KAAK,GAAZ;AACD;;AAjBkB;;;;AAoBd,eAAe,cAAf,CAA8B,MAA9B,EAA8C,QAA9C,EAA+E,IAA/E,EAAyF;AAC9F,SAAO,IAAI,QAAJ,EAAa,MAAM,kBAAkB,CAAC,MAAD,EAAS,QAAT,EAAmB,IAAnB,CAArC,EAAP;AACD;;AAEM,eAAe,kBAAf,CAAkC,MAAlC,EAAkD,QAAlD,EAAmF,IAAnF,EAA6F;AAClG,QAAM,OAAO,GAAG,QAAQ,CAAC,IAAT,CAAc,sBAAd,CAAqC,MAArC,EAA6C,QAA7C,EAAuD,IAAvD,CAAhB;AACA,QAAM,yBAAS,OAAT,CAAN;AACA,SAAO,OAAP;AACD,C,CAED;AACA;;;AACM,SAAU,6BAAV,CAAwC,OAAxC,EAA0D,qBAA1D,EAAwF;AAC5F,SAAO,qBAAqB,IAAI,sBAAsB,IAAtB,CAA2B,OAAO,CAAC,eAAnC,CAAzB,GAA+E,OAAO,CAAC,eAAvF,GAAyG,OAAO,CAAC,aAAxH;AACD,C","sourcesContent":["import { emptyDir, remove } from \"fs-extra\"\nimport * as path from \"path\"\nimport { Target, AppInfo } from \"../\"\nimport { Arch, debug } from \"builder-util\"\nimport { PlatformPackager } from \"../platformPackager\"\n\nexport class StageDir {\n constructor(readonly dir: string) {\n }\n\n getTempFile(name: string) {\n return this.dir + path.sep + name\n }\n\n cleanup() {\n if (!debug.enabled || process.env.ELECTRON_BUILDER_REMOVE_STAGE_EVEN_IF_DEBUG === \"true\") {\n return remove(this.dir)\n }\n return Promise.resolve()\n }\n\n toString() {\n return this.dir\n }\n}\n\nexport async function createStageDir(target: Target, packager: PlatformPackager<any>, arch: Arch): Promise<StageDir> {\n return new StageDir(await createStageDirPath(target, packager, arch))\n}\n\nexport async function createStageDirPath(target: Target, packager: PlatformPackager<any>, arch: Arch): Promise<string> {\n const tempDir = packager.info.stageDirPathCustomizer(target, packager, arch)\n await emptyDir(tempDir)\n return tempDir\n}\n\n// https://github.com/electron-userland/electron-builder/issues/3100\n// https://github.com/electron-userland/electron-builder/commit/2539cfba20dc639128e75c5b786651b652bb4b78\nexport function getWindowsInstallationDirName(appInfo: AppInfo, isTryToUseProductName: boolean): string {\n return isTryToUseProductName && /^[-_+0-9a-zA-Z .]+$/.test(appInfo.productFilename) ? appInfo.productFilename : appInfo.sanitizedName\n}"],"sourceRoot":""}