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/differentialUpdateInfoBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;AAGO,MAAM,qBAAqB,GAAG,WAA9B;;;AAED,SAAU,mCAAV,CAA8C,YAA9C,EAAoE,YAApE,EAAqH;AACzH,MAAI,YAAY,IAAI,IAApB,EAA0B;AACxB,WAAO,IAAP;AACD;;AAED,QAAM,IAAI,GAAG,MAAM,CAAC,IAAP,CAAY,YAAZ,CAAb;;AACA,MAAI,IAAI,CAAC,MAAL,IAAe,CAAnB,EAAsB;AACpB,WAAO,IAAP;AACD;;AAED,QAAM,QAAQ,GAAwC,EAAtD;;AACA,OAAK,MAAM,IAAX,IAAmB,IAAnB,EAAyB;AACvB,UAAM,eAAe,GAAG,YAAY,CAAC,IAAD,CAApC;AACA,UAAM,IAAI,GAAG,IAAI,CAAC,QAAL,CAAc,eAAe,CAAC,IAA9B,CAAb;AACA,IAAA,QAAQ,CAAC,IAAD,CAAR,GAAiB,MAAA,CAAA,MAAA,CAAA,EAAA,EACZ,eADY,EACG;AAClB,MAAA,IAAI,EAAE,IADY;AAElB;AACA,MAAA;AAHkB,KADH,CAAjB;AAMD;;AACD,SAAO;AAAC,IAAA;AAAD,GAAP;AACD;;AAEK,SAAU,wCAAV,CAAmD,cAAnD,EAAiF;AACrF;;;;;;;;;;;;;;AAqBA,EAAA,cAAc,CAAC,QAAf,GAA0B,CAA1B,CAtBqF,CAuBrF;;AACA,EAAA,cAAc,CAAC,KAAf,GAAuB,KAAvB,CAxBqF,CAyBrF;;AACA,EAAA,cAAc,CAAC,WAAf,GAA6B,QAA7B;AACA,SAAO,cAAP;AACD;;AAEM,eAAe,cAAf,CAA8B,IAA9B,EAA0C;AAC/C,qBAAI,IAAJ,CAAS;AAAC,IAAA,IAAI,EAAE,mBAAI,QAAJ,CAAa,IAAb;AAAP,GAAT,EAAqC,6BAArC;;AACA,SAAO,MAAM,2CAA4C,CAAC,UAAD,EAAa,SAAb,EAAwB,IAAxB,EAA8B,eAA9B,EAA+C,SAA/C,CAA5C,CAAb;AACD;;AAEM,eAAe,cAAf,CAA8B,IAA9B,EAA4C,MAA5C,EAA4D,QAA5D,EAA6F,gBAA7F,EAA4H;AACjI,QAAM,YAAY,GAAG,GAAG,IAAI,GAAG,qBAAqB,EAApD;;AACA,qBAAI,IAAJ,CAAS;AAAC,IAAA,YAAY,EAAE,mBAAI,QAAJ,CAAa,YAAb;AAAf,GAAT,EAAqD,oBAArD;;AACA,QAAM,UAAU,GAAG,MAAM,2CAA4C,CAAC,UAAD,EAAa,SAAb,EAAwB,IAAxB,EAA8B,UAA9B,EAA0C,YAA1C,CAA5C,CAAzB;AACA,QAAM,QAAQ,CAAC,IAAT,CAAc,0BAAd,CAAyC;AAC7C,IAAA,IAAI,EAAE,YADuC;AAE7C,IAAA,gBAAgB,EAAE,gBAAgB,IAAI,IAApB,GAA2B,IAA3B,GAAkC,GAAG,gBAAgB,GAAG,qBAAqB,EAFlD;AAG7C,IAAA,MAH6C;AAI7C,IAAA,IAAI,EAAE,IAJuC;AAK7C,IAAA,QAL6C;AAM7C,IAAA;AAN6C,GAAzC,CAAN;AAQA,SAAO,UAAP;AACD,C","sourcesContent":["import { log } from \"builder-util\"\nimport { BlockMapDataHolder, PackageFileInfo } from \"builder-util-runtime\"\nimport * as path from \"path\"\nimport { Target } from \"../core\"\nimport { PlatformPackager } from \"../platformPackager\"\nimport { executeAppBuilderAsJson } from \"../util/appBuilder\"\nimport { ArchiveOptions } from \"./archive\"\n\nexport const BLOCK_MAP_FILE_SUFFIX = \".blockmap\"\n\nexport function createNsisWebDifferentialUpdateInfo(artifactPath: string, packageFiles: { [arch: string]: PackageFileInfo }) {\n if (packageFiles == null) {\n return null\n }\n\n const keys = Object.keys(packageFiles)\n if (keys.length <= 0) {\n return null\n }\n\n const packages: { [arch: string]: PackageFileInfo } = {}\n for (const arch of keys) {\n const packageFileInfo = packageFiles[arch]\n const file = path.basename(packageFileInfo.path)\n packages[arch] = {\n ...packageFileInfo,\n path: file,\n // https://github.com/electron-userland/electron-builder/issues/2583\n file,\n } as any\n }\n return {packages}\n}\n\nexport function configureDifferentialAwareArchiveOptions(archiveOptions: ArchiveOptions): ArchiveOptions {\n /*\n * dict size 64 MB: Full: 33,744.88 KB, To download: 17,630.3 KB (52%)\n * dict size 16 MB: Full: 33,936.84 KB, To download: 16,175.9 KB (48%)\n * dict size 8 MB: Full: 34,187.59 KB, To download: 8,229.9 KB (24%)\n * dict size 4 MB: Full: 34,628.73 KB, To download: 3,782.97 KB (11%)\n\n as we can see, if file changed in one place, all block is invalidated (and update size approximately equals to dict size)\n\n 1 MB is used:\n\n 1MB:\n\n 2018/01/11 11:54:41:0045 File has 59 changed blocks\n 2018/01/11 11:54:41:0050 Full: 71,588.59 KB, To download: 1,243.39 KB (2%)\n\n 4MB:\n\n 2018/01/11 11:31:43:0440 Full: 70,303.55 KB, To download: 4,843.27 KB (7%)\n 2018/01/11 11:31:43:0435 File has 234 changed blocks\n\n */\n archiveOptions.dictSize = 1\n // solid compression leads to a lot of changed blocks\n archiveOptions.solid = false\n // do not allow to change compression level to avoid different packages\n archiveOptions.compression = \"normal\"\n return archiveOptions\n}\n\nexport async function appendBlockmap(file: string): Promise<BlockMapDataHolder> {\n log.info({file: log.filePath(file)}, \"building embedded block map\")\n return await executeAppBuilderAsJson<BlockMapDataHolder>([\"blockmap\", \"--input\", file, \"--compression\", \"deflate\"])\n}\n\nexport async function createBlockmap(file: string, target: Target, packager: PlatformPackager<any>, safeArtifactName: string | null): Promise<BlockMapDataHolder> {\n const blockMapFile = `${file}${BLOCK_MAP_FILE_SUFFIX}`\n log.info({blockMapFile: log.filePath(blockMapFile)}, \"building block map\")\n const updateInfo = await executeAppBuilderAsJson<BlockMapDataHolder>([\"blockmap\", \"--input\", file, \"--output\", blockMapFile])\n await packager.info.callArtifactBuildCompleted({\n file: blockMapFile,\n safeArtifactName: safeArtifactName == null ? null : `${safeArtifactName}${BLOCK_MAP_FILE_SUFFIX}`,\n target,\n arch: null,\n packager,\n updateInfo,\n })\n return updateInfo\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/targets/differentialUpdateInfoBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAGO,MAAM,qBAAqB,GAAG,WAA9B;;;AAED,SAAU,mCAAV,CAA8C,YAA9C,EAAoE,YAApE,EAAqH;AACzH,MAAI,YAAY,IAAI,IAApB,EAA0B;AACxB,WAAO,IAAP;AACD;;AAED,QAAM,IAAI,GAAG,MAAM,CAAC,IAAP,CAAY,YAAZ,CAAb;;AACA,MAAI,IAAI,CAAC,MAAL,IAAe,CAAnB,EAAsB;AACpB,WAAO,IAAP;AACD;;AAED,QAAM,QAAQ,GAAwC,EAAtD;;AACA,OAAK,MAAM,IAAX,IAAmB,IAAnB,EAAyB;AACvB,UAAM,eAAe,GAAG,YAAY,CAAC,IAAD,CAApC;AACA,UAAM,IAAI,GAAG,IAAI,CAAC,QAAL,CAAc,eAAe,CAAC,IAA9B,CAAb;AACA,IAAA,QAAQ,CAAC,IAAD,CAAR,GAAiB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACZ,eADY,CAAA,EACG;AAClB,MAAA,IAAI,EAAE,IADY;AAElB;AACA,MAAA;AAHkB,KADH,CAAjB;AAMD;;AACD,SAAO;AAAC,IAAA;AAAD,GAAP;AACD;;AAEK,SAAU,wCAAV,CAAmD,cAAnD,EAAiF;AACrF;;;;;;;;;;;;;;AAqBA,EAAA,cAAc,CAAC,QAAf,GAA0B,CAA1B,CAtBqF,CAuBrF;;AACA,EAAA,cAAc,CAAC,KAAf,GAAuB,KAAvB,CAxBqF,CAyBrF;;AACA,EAAA,cAAc,CAAC,WAAf,GAA6B,QAA7B;AACA,SAAO,cAAP;AACD;;AAEM,eAAe,cAAf,CAA8B,IAA9B,EAA0C;AAC/C,qBAAI,IAAJ,CAAS;AAAC,IAAA,IAAI,EAAE,mBAAI,QAAJ,CAAa,IAAb;AAAP,GAAT,EAAqC,6BAArC;;AACA,SAAO,MAAM,2CAA4C,CAAC,UAAD,EAAa,SAAb,EAAwB,IAAxB,EAA8B,eAA9B,EAA+C,SAA/C,CAA5C,CAAb;AACD;;AAEM,eAAe,cAAf,CAA8B,IAA9B,EAA4C,MAA5C,EAA4D,QAA5D,EAA6F,gBAA7F,EAA4H;AACjI,QAAM,YAAY,GAAG,GAAG,IAAI,GAAG,qBAAqB,EAApD;;AACA,qBAAI,IAAJ,CAAS;AAAC,IAAA,YAAY,EAAE,mBAAI,QAAJ,CAAa,YAAb;AAAf,GAAT,EAAqD,oBAArD;;AACA,QAAM,UAAU,GAAG,MAAM,2CAA4C,CAAC,UAAD,EAAa,SAAb,EAAwB,IAAxB,EAA8B,UAA9B,EAA0C,YAA1C,CAA5C,CAAzB;AACA,QAAM,QAAQ,CAAC,IAAT,CAAc,0BAAd,CAAyC;AAC7C,IAAA,IAAI,EAAE,YADuC;AAE7C,IAAA,gBAAgB,EAAE,gBAAgB,IAAI,IAApB,GAA2B,IAA3B,GAAkC,GAAG,gBAAgB,GAAG,qBAAqB,EAFlD;AAG7C,IAAA,MAH6C;AAI7C,IAAA,IAAI,EAAE,IAJuC;AAK7C,IAAA,QAL6C;AAM7C,IAAA;AAN6C,GAAzC,CAAN;AAQA,SAAO,UAAP;AACD,C","sourcesContent":["import { log } from \"builder-util\"\nimport { BlockMapDataHolder, PackageFileInfo } from \"builder-util-runtime\"\nimport * as path from \"path\"\nimport { Target } from \"../core\"\nimport { PlatformPackager } from \"../platformPackager\"\nimport { executeAppBuilderAsJson } from \"../util/appBuilder\"\nimport { ArchiveOptions } from \"./archive\"\n\nexport const BLOCK_MAP_FILE_SUFFIX = \".blockmap\"\n\nexport function createNsisWebDifferentialUpdateInfo(artifactPath: string, packageFiles: { [arch: string]: PackageFileInfo }) {\n if (packageFiles == null) {\n return null\n }\n\n const keys = Object.keys(packageFiles)\n if (keys.length <= 0) {\n return null\n }\n\n const packages: { [arch: string]: PackageFileInfo } = {}\n for (const arch of keys) {\n const packageFileInfo = packageFiles[arch]\n const file = path.basename(packageFileInfo.path)\n packages[arch] = {\n ...packageFileInfo,\n path: file,\n // https://github.com/electron-userland/electron-builder/issues/2583\n file,\n } as any\n }\n return {packages}\n}\n\nexport function configureDifferentialAwareArchiveOptions(archiveOptions: ArchiveOptions): ArchiveOptions {\n /*\n * dict size 64 MB: Full: 33,744.88 KB, To download: 17,630.3 KB (52%)\n * dict size 16 MB: Full: 33,936.84 KB, To download: 16,175.9 KB (48%)\n * dict size 8 MB: Full: 34,187.59 KB, To download: 8,229.9 KB (24%)\n * dict size 4 MB: Full: 34,628.73 KB, To download: 3,782.97 KB (11%)\n\n as we can see, if file changed in one place, all block is invalidated (and update size approximately equals to dict size)\n\n 1 MB is used:\n\n 1MB:\n\n 2018/01/11 11:54:41:0045 File has 59 changed blocks\n 2018/01/11 11:54:41:0050 Full: 71,588.59 KB, To download: 1,243.39 KB (2%)\n\n 4MB:\n\n 2018/01/11 11:31:43:0440 Full: 70,303.55 KB, To download: 4,843.27 KB (7%)\n 2018/01/11 11:31:43:0435 File has 234 changed blocks\n\n */\n archiveOptions.dictSize = 1\n // solid compression leads to a lot of changed blocks\n archiveOptions.solid = false\n // do not allow to change compression level to avoid different packages\n archiveOptions.compression = \"normal\"\n return archiveOptions\n}\n\nexport async function appendBlockmap(file: string): Promise<BlockMapDataHolder> {\n log.info({file: log.filePath(file)}, \"building embedded block map\")\n return await executeAppBuilderAsJson<BlockMapDataHolder>([\"blockmap\", \"--input\", file, \"--compression\", \"deflate\"])\n}\n\nexport async function createBlockmap(file: string, target: Target, packager: PlatformPackager<any>, safeArtifactName: string | null): Promise<BlockMapDataHolder> {\n const blockMapFile = `${file}${BLOCK_MAP_FILE_SUFFIX}`\n log.info({blockMapFile: log.filePath(blockMapFile)}, \"building block map\")\n const updateInfo = await executeAppBuilderAsJson<BlockMapDataHolder>([\"blockmap\", \"--input\", file, \"--output\", blockMapFile])\n await packager.info.callArtifactBuildCompleted({\n file: blockMapFile,\n safeArtifactName: safeArtifactName == null ? null : `${safeArtifactName}${BLOCK_MAP_FILE_SUFFIX}`,\n target,\n arch: null,\n packager,\n updateInfo,\n })\n return updateInfo\n}"],"sourceRoot":""}
@@ -137,7 +137,9 @@ function _tools() {
137
137
  return data;
138
138
  }
139
139
 
140
- 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; } }
140
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
141
+
142
+ 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; }
141
143
 
142
144
  class FpmTarget extends _core().Target {
143
145
  constructor(name, packager, helper, outDir) {
@@ -145,7 +147,7 @@ class FpmTarget extends _core().Target {
145
147
  this.packager = packager;
146
148
  this.helper = helper;
147
149
  this.outDir = outDir;
148
- this.options = Object.assign({}, this.packager.platformSpecificBuildOptions, this.packager.config[this.name]);
150
+ this.options = Object.assign(Object.assign({}, this.packager.platformSpecificBuildOptions), this.packager.config[this.name]);
149
151
  this.scriptFiles = this.createScripts();
150
152
  }
151
153
 
@@ -302,7 +304,7 @@ class FpmTarget extends _core().Target {
302
304
  return;
303
305
  }
304
306
 
305
- const env = Object.assign({}, process.env, {
307
+ const env = Object.assign(Object.assign({}, process.env), {
306
308
  SZA_PATH: _zipBin().path7za,
307
309
  SZA_COMPRESSION_LEVEL: packager.compression === "store" ? "0" : "9"
308
310
  }); // rpmbuild wants directory rpm with some default config files. Even if we can use dylibbundler, path to such config files are not changed (we need to replace in the binary)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/targets/fpm.ts"],"names":[],"mappings":"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","sourcesContent":["import { path7za } from \"7zip-bin\"\nimport { Arch, executeAppBuilder, log, TmpDir, toLinuxArchString, use } from \"builder-util\"\nimport { unlinkIfExists } from \"builder-util/out/fs\"\nimport { ensureDir, outputFile, readFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { DebOptions, LinuxTargetSpecificOptions } from \"..\"\nimport { smarten } from \"../appInfo\"\nimport { Target } from \"../core\"\nimport * as errorMessages from \"../errorMessages\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { objectToArgs } from \"../util/appBuilder\"\nimport { computeEnv } from \"../util/bundledTool\"\nimport { isMacOsSierra } from \"../util/macosVersion\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { installPrefix, LinuxTargetHelper } from \"./LinuxTargetHelper\"\nimport { getLinuxToolsPath } from \"./tools\"\n\ninterface FpmOptions {\n maintainer: string | undefined\n vendor: string\n url: string\n}\n\nexport default class FpmTarget extends Target {\n readonly options: LinuxTargetSpecificOptions = {...this.packager.platformSpecificBuildOptions, ...(this.packager.config as any)[this.name]}\n\n private readonly scriptFiles: Promise<Array<string>>\n\n constructor(name: string, private readonly packager: LinuxPackager, private readonly helper: LinuxTargetHelper, readonly outDir: string) {\n super(name, false)\n\n this.scriptFiles = this.createScripts()\n }\n\n private async createScripts(): Promise<Array<string>> {\n const defaultTemplatesDir = getTemplatePath(\"linux\")\n\n const packager = this.packager\n const templateOptions = {\n // old API compatibility\n executable: packager.executableName,\n productFilename: packager.appInfo.productFilename, ...packager.platformSpecificBuildOptions}\n\n function getResource(value: string | null | undefined, defaultFile: string) {\n if (value == null) {\n return path.join(defaultTemplatesDir, defaultFile)\n }\n return path.resolve(packager.projectDir, value)\n }\n\n return await Promise.all<string>([\n writeConfigFile(packager.info.tempDirManager, getResource(this.options.afterInstall, \"after-install.tpl\"), templateOptions),\n writeConfigFile(packager.info.tempDirManager, getResource(this.options.afterRemove, \"after-remove.tpl\"), templateOptions)\n ])\n }\n\n checkOptions(): Promise<any> {\n return this.computeFpmMetaInfoOptions()\n }\n\n private async computeFpmMetaInfoOptions(): Promise<FpmOptions> {\n const packager = this.packager\n const projectUrl = await packager.appInfo.computePackageUrl()\n const errors: Array<string> = []\n if (projectUrl == null) {\n errors.push(\"Please specify project homepage, see https://electron.build/configuration/configuration#Metadata-homepage\")\n }\n\n const options = this.options\n let author = options.maintainer\n if (author == null) {\n const a = packager.info.metadata.author\n if (a == null || a.email == null) {\n errors.push(errorMessages.authorEmailIsMissed)\n }\n else {\n author = `${a.name} <${a.email}>`\n }\n }\n\n if (errors.length > 0) {\n throw new Error(errors.join(\"\\n\\n\"))\n }\n\n return {\n maintainer: author!!,\n url: projectUrl!!,\n vendor: options.vendor || author!!,\n }\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const target = this.name\n\n // tslint:disable:no-invalid-template-strings\n let nameFormat = \"${name}-${version}-${arch}.${ext}\"\n let isUseArchIfX64 = false\n if (target === \"deb\") {\n nameFormat = \"${name}_${version}_${arch}.${ext}\"\n isUseArchIfX64 = true\n }\n else if (target === \"rpm\") {\n nameFormat = \"${name}-${version}.${arch}.${ext}\"\n isUseArchIfX64 = true\n }\n\n const packager = this.packager\n const artifactPath = path.join(this.outDir, packager.expandArtifactNamePattern(this.options, target, arch, nameFormat, !isUseArchIfX64))\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: target,\n file: artifactPath,\n arch,\n })\n\n await unlinkIfExists(artifactPath)\n if (packager.packagerOptions.prepackaged != null) {\n await ensureDir(this.outDir)\n }\n\n const scripts = await this.scriptFiles\n const appInfo = packager.appInfo\n const options = this.options\n const synopsis = options.synopsis\n const args = [\n \"--architecture\", toLinuxArchString(arch, target),\n \"--name\", appInfo.linuxPackageName,\n \"--after-install\", scripts[0],\n \"--after-remove\", scripts[1],\n \"--description\", smarten(target === \"rpm\" ? this.helper.getDescription(options)! : `${synopsis || \"\"}\\n ${this.helper.getDescription(options)}`),\n \"--version\", appInfo.version,\n \"--package\", artifactPath,\n ]\n\n objectToArgs(args, await this.computeFpmMetaInfoOptions() as any)\n\n const packageCategory = options.packageCategory\n if (packageCategory != null) {\n args.push(\"--category\", packageCategory)\n }\n\n if (target === \"deb\") {\n use((options as DebOptions).priority, it => args.push(\"--deb-priority\", it!))\n }\n else if (target === \"rpm\") {\n if (synopsis != null) {\n args.push(\"--rpm-summary\", smarten(synopsis))\n }\n }\n\n const fpmConfiguration: FpmConfiguration = {\n args, target,\n }\n\n if (options.compression != null) {\n fpmConfiguration.compression = options.compression\n }\n\n // noinspection JSDeprecatedSymbols\n const depends = options.depends\n if (depends != null) {\n if (Array.isArray(depends)) {\n fpmConfiguration.customDepends = depends\n }\n else {\n // noinspection SuspiciousTypeOfGuard\n if (typeof depends === \"string\") {\n fpmConfiguration.customDepends = [depends as string]\n }\n else {\n throw new Error(`depends must be Array or String, but specified as: ${depends}`)\n }\n }\n }\n\n use(packager.info.metadata.license, it => args.push(\"--license\", it!))\n use(appInfo.buildNumber, it => args.push(\"--iteration\", it!))\n\n use(options.fpm, it => args.push(...it as any))\n\n args.push(`${appOutDir}/=${installPrefix}/${appInfo.productFilename}`)\n for (const icon of (await this.helper.icons)) {\n const extWithDot = path.extname(icon.file)\n const sizeName = extWithDot === \".svg\" ? \"scalable\" : `${icon.size}x${icon.size}`\n args.push(`${icon.file}=/usr/share/icons/hicolor/${sizeName}/apps/${packager.executableName}${extWithDot}`)\n }\n\n const mimeTypeFilePath = await this.helper.mimeTypeFiles\n if (mimeTypeFilePath != null) {\n args.push(`${mimeTypeFilePath}=/usr/share/mime/packages/${packager.executableName}.xml`)\n }\n\n const desktopFilePath = await this.helper.writeDesktopEntry(this.options)\n args.push(`${desktopFilePath}=/usr/share/applications/${packager.executableName}.desktop`)\n\n if (packager.packagerOptions.effectiveOptionComputed != null && await packager.packagerOptions.effectiveOptionComputed([args, desktopFilePath])) {\n return\n }\n\n const env = {\n ...process.env,\n SZA_PATH: path7za,\n SZA_COMPRESSION_LEVEL: packager.compression === \"store\" ? \"0\" : \"9\",\n }\n\n // rpmbuild wants directory rpm with some default config files. Even if we can use dylibbundler, path to such config files are not changed (we need to replace in the binary)\n // so, for now, brew install rpm is still required.\n if (target !== \"rpm\" && await isMacOsSierra()) {\n const linuxToolsPath = await getLinuxToolsPath()\n Object.assign(env, {\n PATH: computeEnv(process.env.PATH, [path.join(linuxToolsPath, \"bin\")]),\n DYLD_LIBRARY_PATH: computeEnv(process.env.DYLD_LIBRARY_PATH, [path.join(linuxToolsPath, \"lib\")]),\n })\n }\n\n await executeAppBuilder([\"fpm\", \"--configuration\", JSON.stringify(fpmConfiguration)], undefined, {env})\n\n await packager.dispatchArtifactCreated(artifactPath, this, arch)\n }\n}\n\ninterface FpmConfiguration {\n target: string\n args: Array<string>\n customDepends?: Array<string>\n compression?: string | null\n}\n\nasync function writeConfigFile(tmpDir: TmpDir, templatePath: string, options: any): Promise<string> {\n //noinspection JSUnusedLocalSymbols\n function replacer(match: string, p1: string) {\n if (p1 in options) {\n return options[p1]\n }\n else {\n throw new Error(`Macro ${p1} is not defined`)\n }\n }\n const config = (await readFile(templatePath, \"utf8\"))\n .replace(/\\${([a-zA-Z]+)}/g, replacer)\n .replace(/<%=([a-zA-Z]+)%>/g, (match, p1) => {\n log.warn(\"<%= varName %> is deprecated, please use ${varName} instead\")\n return replacer(match, p1.trim())\n })\n\n const outputPath = await tmpDir.getTempFile({suffix: path.basename(templatePath, \".tpl\")})\n await outputFile(outputPath, config)\n return outputPath\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../src/targets/fpm.ts"],"names":[],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAQc,MAAO,SAAP,SAAyB,cAAzB,CAA+B;AAK3C,EAAA,WAAA,CAAY,IAAZ,EAA2C,QAA3C,EAAqF,MAArF,EAAyH,MAAzH,EAAuI;AACrI,UAAM,IAAN,EAAY,KAAZ;AADyC,SAAA,QAAA,GAAA,QAAA;AAA0C,SAAA,MAAA,GAAA,MAAA;AAAoC,SAAA,MAAA,GAAA,MAAA;AAJhH,SAAA,OAAA,GAAO,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAmC,KAAK,QAAL,CAAc,4BAAjD,CAAA,EAAmF,KAAK,QAAL,CAAc,MAAd,CAA6B,KAAK,IAAlC,CAAnF,CAAP;AAOP,SAAK,WAAL,GAAmB,KAAK,aAAL,EAAnB;AACD;;AAEO,QAAM,aAAN,GAAmB;AACzB,UAAM,mBAAmB,GAAG,oCAAgB,OAAhB,CAA5B;AAEA,UAAM,QAAQ,GAAG,KAAK,QAAtB;AACA,UAAM,eAAe,GAAA,MAAA,CAAA,MAAA,CAAA;AACnB;AACA,MAAA,UAAU,EAAE,QAAQ,CAAC,cAFF;AAGnB,MAAA,eAAe,EAAE,QAAQ,CAAC,OAAT,CAAiB;AAHf,KAAA,EAGmC,QAAQ,CAAC,4BAH5C,CAArB;;AAKA,aAAS,WAAT,CAAqB,KAArB,EAAuD,WAAvD,EAA0E;AACxE,UAAI,KAAK,IAAI,IAAb,EAAmB;AACjB,eAAO,IAAI,CAAC,IAAL,CAAU,mBAAV,EAA+B,WAA/B,CAAP;AACD;;AACD,aAAO,IAAI,CAAC,OAAL,CAAa,QAAQ,CAAC,UAAtB,EAAkC,KAAlC,CAAP;AACD;;AAED,WAAO,MAAM,OAAO,CAAC,GAAR,CAAoB,CAC/B,eAAe,CAAC,QAAQ,CAAC,IAAT,CAAc,cAAf,EAA+B,WAAW,CAAC,KAAK,OAAL,CAAa,YAAd,EAA4B,mBAA5B,CAA1C,EAA4F,eAA5F,CADgB,EAE/B,eAAe,CAAC,QAAQ,CAAC,IAAT,CAAc,cAAf,EAA+B,WAAW,CAAC,KAAK,OAAL,CAAa,WAAd,EAA2B,kBAA3B,CAA1C,EAA0F,eAA1F,CAFgB,CAApB,CAAb;AAID;;AAED,EAAA,YAAY,GAAA;AACV,WAAO,KAAK,yBAAL,EAAP;AACD;;AAEO,QAAM,yBAAN,GAA+B;AACrC,UAAM,QAAQ,GAAG,KAAK,QAAtB;AACA,UAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,OAAT,CAAiB,iBAAjB,EAAzB;AACA,UAAM,MAAM,GAAkB,EAA9B;;AACA,QAAI,UAAU,IAAI,IAAlB,EAAwB;AACtB,MAAA,MAAM,CAAC,IAAP,CAAY,2GAAZ;AACD;;AAED,UAAM,OAAO,GAAG,KAAK,OAArB;AACA,QAAI,MAAM,GAAG,OAAO,CAAC,UAArB;;AACA,QAAI,MAAM,IAAI,IAAd,EAAoB;AAClB,YAAM,CAAC,GAAG,QAAQ,CAAC,IAAT,CAAc,QAAd,CAAuB,MAAjC;;AACA,UAAI,CAAC,IAAI,IAAL,IAAa,CAAC,CAAC,KAAF,IAAW,IAA5B,EAAkC;AAChC,QAAA,MAAM,CAAC,IAAP,CAAY,aAAa,GAAC,mBAA1B;AACD,OAFD,MAGK;AACH,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,GAA9B;AACD;AACF;;AAED,QAAI,MAAM,CAAC,MAAP,GAAgB,CAApB,EAAuB;AACrB,YAAM,IAAI,KAAJ,CAAU,MAAM,CAAC,IAAP,CAAY,MAAZ,CAAV,CAAN;AACD;;AAED,WAAO;AACL,MAAA,UAAU,EAAE,MADP;AAEL,MAAA,GAAG,EAAE,UAFA;AAGL,MAAA,MAAM,EAAE,OAAO,CAAC,MAAR,IAAkB;AAHrB,KAAP;AAKD;;AAED,QAAM,KAAN,CAAY,SAAZ,EAA+B,IAA/B,EAAyC;AACvC,UAAM,MAAM,GAAG,KAAK,IAApB,CADuC,CAGvC;;AACA,QAAI,UAAU,GAAG,mCAAjB;AACA,QAAI,cAAc,GAAG,KAArB;;AACA,QAAI,MAAM,KAAK,KAAf,EAAsB;AACpB,MAAA,UAAU,GAAG,mCAAb;AACA,MAAA,cAAc,GAAG,IAAjB;AACD,KAHD,MAIK,IAAI,MAAM,KAAK,KAAf,EAAsB;AACzB,MAAA,UAAU,GAAG,mCAAb;AACA,MAAA,cAAc,GAAG,IAAjB;AACD;;AAED,UAAM,QAAQ,GAAG,KAAK,QAAtB;AACA,UAAM,YAAY,GAAG,IAAI,CAAC,IAAL,CAAU,KAAK,MAAf,EAAuB,QAAQ,CAAC,yBAAT,CAAmC,KAAK,OAAxC,EAAiD,MAAjD,EAAyD,IAAzD,EAA+D,UAA/D,EAA2E,CAAC,cAA5E,CAAvB,CAArB;AAEA,UAAM,QAAQ,CAAC,IAAT,CAAc,wBAAd,CAAuC;AAC3C,MAAA,qBAAqB,EAAE,MADoB;AAE3C,MAAA,IAAI,EAAE,YAFqC;AAG3C,MAAA;AAH2C,KAAvC,CAAN;AAMA,UAAM,0BAAe,YAAf,CAAN;;AACA,QAAI,QAAQ,CAAC,eAAT,CAAyB,WAAzB,IAAwC,IAA5C,EAAkD;AAChD,YAAM,0BAAU,KAAK,MAAf,CAAN;AACD;;AAED,UAAM,OAAO,GAAG,MAAM,KAAK,WAA3B;AACA,UAAM,OAAO,GAAG,QAAQ,CAAC,OAAzB;AACA,UAAM,OAAO,GAAG,KAAK,OAArB;AACA,UAAM,QAAQ,GAAG,OAAO,CAAC,QAAzB;AACA,UAAM,IAAI,GAAG,CACX,gBADW,EACO,sCAAkB,IAAlB,EAAwB,MAAxB,CADP,EAEX,QAFW,EAED,OAAO,CAAC,gBAFP,EAGX,iBAHW,EAGQ,OAAO,CAAC,CAAD,CAHf,EAIX,gBAJW,EAIO,OAAO,CAAC,CAAD,CAJd,EAKX,eALW,EAKM,wBAAQ,MAAM,KAAK,KAAX,GAAmB,KAAK,MAAL,CAAY,cAAZ,CAA2B,OAA3B,CAAnB,GAA0D,GAAG,QAAQ,IAAI,EAAE,MAAM,KAAK,MAAL,CAAY,cAAZ,CAA2B,OAA3B,CAAmC,EAA5H,CALN,EAMX,WANW,EAME,OAAO,CAAC,OANV,EAOX,WAPW,EAOE,YAPF,CAAb;AAUA,oCAAa,IAAb,GAAmB,MAAM,KAAK,yBAAL,EAAzB;AAEA,UAAM,eAAe,GAAG,OAAO,CAAC,eAAhC;;AACA,QAAI,eAAe,IAAI,IAAvB,EAA6B;AAC3B,MAAA,IAAI,CAAC,IAAL,CAAU,YAAV,EAAwB,eAAxB;AACD;;AAED,QAAI,MAAM,KAAK,KAAf,EAAsB;AACpB,8BAAK,OAAsB,CAAC,QAA5B,EAAsC,EAAE,IAAI,IAAI,CAAC,IAAL,CAAU,gBAAV,EAA4B,EAA5B,CAA5C;AACD,KAFD,MAGK,IAAI,MAAM,KAAK,KAAf,EAAsB;AACzB,UAAI,QAAQ,IAAI,IAAhB,EAAsB;AACpB,QAAA,IAAI,CAAC,IAAL,CAAU,eAAV,EAA2B,wBAAQ,QAAR,CAA3B;AACD;AACF;;AAED,UAAM,gBAAgB,GAAqB;AACzC,MAAA,IADyC;AACnC,MAAA;AADmC,KAA3C;;AAIA,QAAI,OAAO,CAAC,WAAR,IAAuB,IAA3B,EAAiC;AAC/B,MAAA,gBAAgB,CAAC,WAAjB,GAA+B,OAAO,CAAC,WAAvC;AACD,KAjEsC,CAmEvC;;;AACA,UAAM,OAAO,GAAG,OAAO,CAAC,OAAxB;;AACA,QAAI,OAAO,IAAI,IAAf,EAAqB;AACnB,UAAI,KAAK,CAAC,OAAN,CAAc,OAAd,CAAJ,EAA4B;AAC1B,QAAA,gBAAgB,CAAC,aAAjB,GAAiC,OAAjC;AACD,OAFD,MAGK;AACH;AACA,YAAI,OAAO,OAAP,KAAmB,QAAvB,EAAiC;AAC/B,UAAA,gBAAgB,CAAC,aAAjB,GAAiC,CAAC,OAAD,CAAjC;AACD,SAFD,MAGK;AACH,gBAAM,IAAI,KAAJ,CAAU,sDAAsD,OAAO,EAAvE,CAAN;AACD;AACF;AACF;;AAED,4BAAI,QAAQ,CAAC,IAAT,CAAc,QAAd,CAAuB,OAA3B,EAAoC,EAAE,IAAI,IAAI,CAAC,IAAL,CAAU,WAAV,EAAuB,EAAvB,CAA1C;AACA,4BAAI,OAAO,CAAC,WAAZ,EAAyB,EAAE,IAAI,IAAI,CAAC,IAAL,CAAU,aAAV,EAAyB,EAAzB,CAA/B;AAEA,4BAAI,OAAO,CAAC,GAAZ,EAAiB,EAAE,IAAI,IAAI,CAAC,IAAL,CAAU,GAAG,EAAb,CAAvB;AAEA,IAAA,IAAI,CAAC,IAAL,CAAU,GAAG,SAAS,KAAK,kCAAa,IAAI,OAAO,CAAC,eAAe,EAAnE;;AACA,SAAK,MAAM,IAAX,IAAoB,MAAM,KAAK,MAAL,CAAY,KAAtC,EAA8C;AAC5C,YAAM,UAAU,GAAG,IAAI,CAAC,OAAL,CAAa,IAAI,CAAC,IAAlB,CAAnB;AACA,YAAM,QAAQ,GAAG,UAAU,KAAK,MAAf,GAAwB,UAAxB,GAAqC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAA/E;AACA,MAAA,IAAI,CAAC,IAAL,CAAU,GAAG,IAAI,CAAC,IAAI,6BAA6B,QAAQ,SAAS,QAAQ,CAAC,cAAc,GAAG,UAAU,EAAxG;AACD;;AAED,UAAM,gBAAgB,GAAG,MAAM,KAAK,MAAL,CAAY,aAA3C;;AACA,QAAI,gBAAgB,IAAI,IAAxB,EAA8B;AAC5B,MAAA,IAAI,CAAC,IAAL,CAAU,GAAG,gBAAgB,6BAA6B,QAAQ,CAAC,cAAc,MAAjF;AACD;;AAED,UAAM,eAAe,GAAG,MAAM,KAAK,MAAL,CAAY,iBAAZ,CAA8B,KAAK,OAAnC,CAA9B;AACA,IAAA,IAAI,CAAC,IAAL,CAAU,GAAG,eAAe,4BAA4B,QAAQ,CAAC,cAAc,UAA/E;;AAEA,QAAI,QAAQ,CAAC,eAAT,CAAyB,uBAAzB,IAAoD,IAApD,KAA4D,MAAM,QAAQ,CAAC,eAAT,CAAyB,uBAAzB,CAAiD,CAAC,IAAD,EAAO,eAAP,CAAjD,CAAlE,CAAJ,EAAiJ;AAC/I;AACD;;AAED,UAAM,GAAG,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACJ,OAAO,CAAC,GADJ,CAAA,EACO;AACd,MAAA,QAAQ,EAAE,iBADI;AAEd,MAAA,qBAAqB,EAAE,QAAQ,CAAC,WAAT,KAAyB,OAAzB,GAAmC,GAAnC,GAAyC;AAFlD,KADP,CAAT,CA5GuC,CAkHvC;AACA;;AACA,QAAI,MAAM,KAAK,KAAX,KAAoB,MAAM,oCAA1B,CAAJ,EAA+C;AAC7C,YAAM,cAAc,GAAG,MAAM,iCAA7B;AACA,MAAA,MAAM,CAAC,MAAP,CAAc,GAAd,EAAmB;AACjB,QAAA,IAAI,EAAE,+BAAW,OAAO,CAAC,GAAR,CAAY,IAAvB,EAA6B,CAAC,IAAI,CAAC,IAAL,CAAU,cAAV,EAA0B,KAA1B,CAAD,CAA7B,CADW;AAEjB,QAAA,iBAAiB,EAAE,+BAAW,OAAO,CAAC,GAAR,CAAY,iBAAvB,EAA0C,CAAC,IAAI,CAAC,IAAL,CAAU,cAAV,EAA0B,KAA1B,CAAD,CAA1C;AAFF,OAAnB;AAID;;AAED,UAAM,sCAAkB,CAAC,KAAD,EAAQ,iBAAR,EAA2B,IAAI,CAAC,SAAL,CAAe,gBAAf,CAA3B,CAAlB,EAAgF,SAAhF,EAA2F;AAAC,MAAA;AAAD,KAA3F,CAAN;AAEA,UAAM,QAAQ,CAAC,uBAAT,CAAiC,YAAjC,EAA+C,IAA/C,EAAqD,IAArD,CAAN;AACD;;AAnM0C;;;;AA6M7C,eAAe,eAAf,CAA+B,MAA/B,EAA+C,YAA/C,EAAqE,OAArE,EAAiF;AAC/E;AACA,WAAS,QAAT,CAAkB,KAAlB,EAAiC,EAAjC,EAA2C;AACzC,QAAI,EAAE,IAAI,OAAV,EAAmB;AACjB,aAAO,OAAO,CAAC,EAAD,CAAd;AACD,KAFD,MAGK;AACH,YAAM,IAAI,KAAJ,CAAU,SAAS,EAAE,iBAArB,CAAN;AACD;AACF;;AACD,QAAM,MAAM,GAAG,CAAC,MAAM,yBAAS,YAAT,EAAuB,MAAvB,CAAP,EACZ,OADY,CACJ,kBADI,EACgB,QADhB,EAEZ,OAFY,CAEJ,mBAFI,EAEiB,CAAC,KAAD,EAAQ,EAAR,KAAc;AAC1C,uBAAI,IAAJ,CAAS,6DAAT;;AACA,WAAO,QAAQ,CAAC,KAAD,EAAQ,EAAE,CAAC,IAAH,EAAR,CAAf;AACD,GALY,CAAf;AAOA,QAAM,UAAU,GAAG,MAAM,MAAM,CAAC,WAAP,CAAmB;AAAC,IAAA,MAAM,EAAE,IAAI,CAAC,QAAL,CAAc,YAAd,EAA4B,MAA5B;AAAT,GAAnB,CAAzB;AACA,QAAM,2BAAW,UAAX,EAAuB,MAAvB,CAAN;AACA,SAAO,UAAP;AACD,C","sourcesContent":["import { path7za } from \"7zip-bin\"\nimport { Arch, executeAppBuilder, log, TmpDir, toLinuxArchString, use } from \"builder-util\"\nimport { unlinkIfExists } from \"builder-util/out/fs\"\nimport { ensureDir, outputFile, readFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { DebOptions, LinuxTargetSpecificOptions } from \"..\"\nimport { smarten } from \"../appInfo\"\nimport { Target } from \"../core\"\nimport * as errorMessages from \"../errorMessages\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { objectToArgs } from \"../util/appBuilder\"\nimport { computeEnv } from \"../util/bundledTool\"\nimport { isMacOsSierra } from \"../util/macosVersion\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { installPrefix, LinuxTargetHelper } from \"./LinuxTargetHelper\"\nimport { getLinuxToolsPath } from \"./tools\"\n\ninterface FpmOptions {\n maintainer: string | undefined\n vendor: string\n url: string\n}\n\nexport default class FpmTarget extends Target {\n readonly options: LinuxTargetSpecificOptions = {...this.packager.platformSpecificBuildOptions, ...(this.packager.config as any)[this.name]}\n\n private readonly scriptFiles: Promise<Array<string>>\n\n constructor(name: string, private readonly packager: LinuxPackager, private readonly helper: LinuxTargetHelper, readonly outDir: string) {\n super(name, false)\n\n this.scriptFiles = this.createScripts()\n }\n\n private async createScripts(): Promise<Array<string>> {\n const defaultTemplatesDir = getTemplatePath(\"linux\")\n\n const packager = this.packager\n const templateOptions = {\n // old API compatibility\n executable: packager.executableName,\n productFilename: packager.appInfo.productFilename, ...packager.platformSpecificBuildOptions}\n\n function getResource(value: string | null | undefined, defaultFile: string) {\n if (value == null) {\n return path.join(defaultTemplatesDir, defaultFile)\n }\n return path.resolve(packager.projectDir, value)\n }\n\n return await Promise.all<string>([\n writeConfigFile(packager.info.tempDirManager, getResource(this.options.afterInstall, \"after-install.tpl\"), templateOptions),\n writeConfigFile(packager.info.tempDirManager, getResource(this.options.afterRemove, \"after-remove.tpl\"), templateOptions)\n ])\n }\n\n checkOptions(): Promise<any> {\n return this.computeFpmMetaInfoOptions()\n }\n\n private async computeFpmMetaInfoOptions(): Promise<FpmOptions> {\n const packager = this.packager\n const projectUrl = await packager.appInfo.computePackageUrl()\n const errors: Array<string> = []\n if (projectUrl == null) {\n errors.push(\"Please specify project homepage, see https://electron.build/configuration/configuration#Metadata-homepage\")\n }\n\n const options = this.options\n let author = options.maintainer\n if (author == null) {\n const a = packager.info.metadata.author\n if (a == null || a.email == null) {\n errors.push(errorMessages.authorEmailIsMissed)\n }\n else {\n author = `${a.name} <${a.email}>`\n }\n }\n\n if (errors.length > 0) {\n throw new Error(errors.join(\"\\n\\n\"))\n }\n\n return {\n maintainer: author!!,\n url: projectUrl!!,\n vendor: options.vendor || author!!,\n }\n }\n\n async build(appOutDir: string, arch: Arch): Promise<any> {\n const target = this.name\n\n // tslint:disable:no-invalid-template-strings\n let nameFormat = \"${name}-${version}-${arch}.${ext}\"\n let isUseArchIfX64 = false\n if (target === \"deb\") {\n nameFormat = \"${name}_${version}_${arch}.${ext}\"\n isUseArchIfX64 = true\n }\n else if (target === \"rpm\") {\n nameFormat = \"${name}-${version}.${arch}.${ext}\"\n isUseArchIfX64 = true\n }\n\n const packager = this.packager\n const artifactPath = path.join(this.outDir, packager.expandArtifactNamePattern(this.options, target, arch, nameFormat, !isUseArchIfX64))\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: target,\n file: artifactPath,\n arch,\n })\n\n await unlinkIfExists(artifactPath)\n if (packager.packagerOptions.prepackaged != null) {\n await ensureDir(this.outDir)\n }\n\n const scripts = await this.scriptFiles\n const appInfo = packager.appInfo\n const options = this.options\n const synopsis = options.synopsis\n const args = [\n \"--architecture\", toLinuxArchString(arch, target),\n \"--name\", appInfo.linuxPackageName,\n \"--after-install\", scripts[0],\n \"--after-remove\", scripts[1],\n \"--description\", smarten(target === \"rpm\" ? this.helper.getDescription(options)! : `${synopsis || \"\"}\\n ${this.helper.getDescription(options)}`),\n \"--version\", appInfo.version,\n \"--package\", artifactPath,\n ]\n\n objectToArgs(args, await this.computeFpmMetaInfoOptions() as any)\n\n const packageCategory = options.packageCategory\n if (packageCategory != null) {\n args.push(\"--category\", packageCategory)\n }\n\n if (target === \"deb\") {\n use((options as DebOptions).priority, it => args.push(\"--deb-priority\", it!))\n }\n else if (target === \"rpm\") {\n if (synopsis != null) {\n args.push(\"--rpm-summary\", smarten(synopsis))\n }\n }\n\n const fpmConfiguration: FpmConfiguration = {\n args, target,\n }\n\n if (options.compression != null) {\n fpmConfiguration.compression = options.compression\n }\n\n // noinspection JSDeprecatedSymbols\n const depends = options.depends\n if (depends != null) {\n if (Array.isArray(depends)) {\n fpmConfiguration.customDepends = depends\n }\n else {\n // noinspection SuspiciousTypeOfGuard\n if (typeof depends === \"string\") {\n fpmConfiguration.customDepends = [depends as string]\n }\n else {\n throw new Error(`depends must be Array or String, but specified as: ${depends}`)\n }\n }\n }\n\n use(packager.info.metadata.license, it => args.push(\"--license\", it!))\n use(appInfo.buildNumber, it => args.push(\"--iteration\", it!))\n\n use(options.fpm, it => args.push(...it as any))\n\n args.push(`${appOutDir}/=${installPrefix}/${appInfo.productFilename}`)\n for (const icon of (await this.helper.icons)) {\n const extWithDot = path.extname(icon.file)\n const sizeName = extWithDot === \".svg\" ? \"scalable\" : `${icon.size}x${icon.size}`\n args.push(`${icon.file}=/usr/share/icons/hicolor/${sizeName}/apps/${packager.executableName}${extWithDot}`)\n }\n\n const mimeTypeFilePath = await this.helper.mimeTypeFiles\n if (mimeTypeFilePath != null) {\n args.push(`${mimeTypeFilePath}=/usr/share/mime/packages/${packager.executableName}.xml`)\n }\n\n const desktopFilePath = await this.helper.writeDesktopEntry(this.options)\n args.push(`${desktopFilePath}=/usr/share/applications/${packager.executableName}.desktop`)\n\n if (packager.packagerOptions.effectiveOptionComputed != null && await packager.packagerOptions.effectiveOptionComputed([args, desktopFilePath])) {\n return\n }\n\n const env = {\n ...process.env,\n SZA_PATH: path7za,\n SZA_COMPRESSION_LEVEL: packager.compression === \"store\" ? \"0\" : \"9\",\n }\n\n // rpmbuild wants directory rpm with some default config files. Even if we can use dylibbundler, path to such config files are not changed (we need to replace in the binary)\n // so, for now, brew install rpm is still required.\n if (target !== \"rpm\" && await isMacOsSierra()) {\n const linuxToolsPath = await getLinuxToolsPath()\n Object.assign(env, {\n PATH: computeEnv(process.env.PATH, [path.join(linuxToolsPath, \"bin\")]),\n DYLD_LIBRARY_PATH: computeEnv(process.env.DYLD_LIBRARY_PATH, [path.join(linuxToolsPath, \"lib\")]),\n })\n }\n\n await executeAppBuilder([\"fpm\", \"--configuration\", JSON.stringify(fpmConfiguration)], undefined, {env})\n\n await packager.dispatchArtifactCreated(artifactPath, this, arch)\n }\n}\n\ninterface FpmConfiguration {\n target: string\n args: Array<string>\n customDepends?: Array<string>\n compression?: string | null\n}\n\nasync function writeConfigFile(tmpDir: TmpDir, templatePath: string, options: any): Promise<string> {\n //noinspection JSUnusedLocalSymbols\n function replacer(match: string, p1: string) {\n if (p1 in options) {\n return options[p1]\n }\n else {\n throw new Error(`Macro ${p1} is not defined`)\n }\n }\n const config = (await readFile(templatePath, \"utf8\"))\n .replace(/\\${([a-zA-Z]+)}/g, replacer)\n .replace(/<%=([a-zA-Z]+)%>/g, (match, p1) => {\n log.warn(\"<%= varName %> is deprecated, please use ${varName} instead\")\n return replacer(match, p1.trim())\n })\n\n const outputPath = await tmpDir.getTempFile({suffix: path.basename(templatePath, \".tpl\")})\n await outputFile(outputPath, config)\n return outputPath\n}\n"],"sourceRoot":""}
@@ -13,17 +13,17 @@ export declare class NsisTarget extends Target {
13
13
  readonly archs: Map<Arch, string>;
14
14
  constructor(packager: WinPackager, outDir: string, targetName: string, packageHelper: AppPackageHelper);
15
15
  build(appOutDir: string, arch: Arch): Promise<void>;
16
- readonly isBuildDifferentialAware: boolean;
16
+ get isBuildDifferentialAware(): boolean;
17
17
  private getPreCompressedFileExtensions;
18
18
  /** @private */
19
19
  buildAppPackage(appOutDir: string, arch: Arch): Promise<PackageFileInfo>;
20
20
  finishBuild(): Promise<any>;
21
- protected readonly installerFilenamePattern: string;
22
- private readonly isPortable;
21
+ protected get installerFilenamePattern(): string;
22
+ private get isPortable();
23
23
  private buildInstaller;
24
24
  protected generateGitHubInstallerName(): string;
25
- private readonly isUnicodeEnabled;
26
- readonly isWebInstaller: boolean;
25
+ private get isUnicodeEnabled();
26
+ get isWebInstaller(): boolean;
27
27
  private computeScriptAndSignUninstaller;
28
28
  private computeVersionKey;
29
29
  protected configureDefines(oneClick: boolean, defines: any): Promise<any>;
@@ -229,7 +229,9 @@ function _nsisUtil() {
229
229
  return data;
230
230
  }
231
231
 
232
- 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; } }
232
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
233
+
234
+ 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; }
233
235
 
234
236
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
235
237
 
@@ -299,7 +301,7 @@ class NsisTarget extends _core().Target {
299
301
 
300
302
  if (isBuildDifferentialAware && this.isWebInstaller) {
301
303
  const data = await (0, _differentialUpdateInfoBuilder().appendBlockmap)(archiveFile);
302
- return Object.assign({}, data, {
304
+ return Object.assign(Object.assign({}, data), {
303
305
  path: archiveFile
304
306
  });
305
307
  } else {
@@ -368,7 +370,7 @@ class NsisTarget extends _core().Target {
368
370
  };
369
371
 
370
372
  if (uninstallAppKey !== guid) {
371
- defines.UNINSTALL_REGISTRY_KEY_2 = `Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{${guid}}`;
373
+ defines.UNINSTALL_REGISTRY_KEY_2 = `Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${guid}`;
372
374
  }
373
375
 
374
376
  const commands = {
@@ -394,7 +396,7 @@ class NsisTarget extends _core().Target {
394
396
 
395
397
  if (this.isPortable && options.useZip) {
396
398
  for (const [arch, dir] of this.archs.entries()) {
397
- defines[arch === _builderUtil().Arch.x64 ? "APP_DIR_64" : "APP_DIR_32"] = dir;
399
+ defines[arch === _builderUtil().Arch.x64 ? "APP_DIR_64" : arch === _builderUtil().Arch.arm64 ? "APP_DIR_ARM64" : "APP_DIR_32"] = dir;
398
400
  }
399
401
  } else if (USE_NSIS_BUILT_IN_COMPRESSOR && this.archs.size === 1) {
400
402
  defines.APP_BUILD_DIR = this.archs.get(this.archs.keys().next().value);
@@ -402,7 +404,7 @@ class NsisTarget extends _core().Target {
402
404
  await _bluebirdLst().default.map(this.archs.keys(), async arch => {
403
405
  const fileInfo = await this.packageHelper.packArch(arch, this);
404
406
  const file = fileInfo.path;
405
- const defineKey = arch === _builderUtil().Arch.x64 ? "APP_64" : "APP_32";
407
+ const defineKey = arch === _builderUtil().Arch.x64 ? "APP_64" : arch === _builderUtil().Arch.arm64 ? "APP_ARM64" : "APP_32";
406
408
  defines[defineKey] = file;
407
409
  defines[`${defineKey}_NAME`] = path.basename(file); // nsis expect a hexadecimal string
408
410
 
@@ -433,6 +435,10 @@ class NsisTarget extends _core().Target {
433
435
  const portableOptions = options;
434
436
  defines.REQUEST_EXECUTION_LEVEL = portableOptions.requestExecutionLevel || "user";
435
437
  defines.UNPACK_DIR_NAME = portableOptions.unpackDirName || (await (0, _builderUtil().executeAppBuilder)(["ksuid"]));
438
+
439
+ if (portableOptions.splashImage != null) {
440
+ defines.SPLASH_IMAGE = portableOptions.splashImage;
441
+ }
436
442
  } else {
437
443
  await this.configureDefines(oneClick, defines);
438
444
  }
@@ -526,13 +532,20 @@ class NsisTarget extends _core().Target {
526
532
  await this.executeMakensis(defines, commands, sharedHeader + (await this.computeFinalScript(script, false))); // http://forums.winamp.com/showthread.php?p=3078545
527
533
 
528
534
  if ((0, _macosVersion().isMacOsCatalina)()) {
529
- (await packager.vm.value).exec(installerPath, []); // Parallels VM can exit after command execution, but NSIS continue to be running
535
+ try {
536
+ _nsisUtil().UninstallerReader.exec(installerPath, uninstallerPath);
537
+ } catch (error) {
538
+ _builderUtil().log.warn("packager.vm is used: " + error.message);
530
539
 
531
- let i = 0;
540
+ const vm = await packager.vm.value;
541
+ await vm.exec(installerPath, []); // Parallels VM can exit after command execution, but NSIS continue to be running
532
542
 
533
- while (!(await (0, _fs().exists)(uninstallerPath)) && i++ < 100) {
534
- // noinspection JSUnusedLocalSymbols
535
- await new Promise((resolve, _reject) => setTimeout(resolve, 300));
543
+ let i = 0;
544
+
545
+ while (!(await (0, _fs().exists)(uninstallerPath)) && i++ < 100) {
546
+ // noinspection JSUnusedLocalSymbols
547
+ await new Promise((resolve, _reject) => setTimeout(resolve, 300));
548
+ }
536
549
  }
537
550
  } else {
538
551
  await (0, _wine().execWine)(installerPath);
@@ -723,7 +736,7 @@ class NsisTarget extends _core().Target {
723
736
  const command = path.join(nsisPath, process.platform === "darwin" ? "mac" : process.platform === "win32" ? "Bin" : "linux", process.platform === "win32" ? "makensis.exe" : "makensis");
724
737
  await (0, _builderUtil().spawnAndWrite)(command, args, script, {
725
738
  // we use NSIS_CONFIG_CONST_DATA_PATH=no to build makensis on Linux, but in any case it doesn't use stubs as MacOS/Windows version, so, we explicitly set NSISDIR
726
- env: Object.assign({}, process.env, {
739
+ env: Object.assign(Object.assign({}, process.env), {
727
740
  NSISDIR: nsisPath
728
741
  }),
729
742
  cwd: _nsisUtil().nsisTemplatesDir
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/targets/nsis/NsisTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import { path7za } from \"7zip-bin\"\nimport BluebirdPromise from \"bluebird-lst\"\nimport { executeAppBuilder, Arch, asArray, AsyncTaskManager, getPlatformIconFileName, InvalidConfigurationError, log, spawnAndWrite, use, exec } from \"builder-util\"\nimport { PackageFileInfo, UUID, CURRENT_APP_PACKAGE_FILE_NAME, CURRENT_APP_INSTALLER_FILE_NAME } from \"builder-util-runtime\"\nimport { getBinFromUrl } from \"../../binDownload\"\nimport { statOrNull, walk, exists } from \"builder-util/out/fs\"\nimport { hashFile } from \"../../util/hash\"\nimport _debug from \"debug\"\nimport { readFile, stat, unlink } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { Target } from \"../../core\"\nimport { DesktopShortcutCreationPolicy, getEffectiveOptions } from \"../../options/CommonWindowsInstallerConfiguration\"\nimport { computeSafeArtifactNameIfNeeded, normalizeExt } from \"../../platformPackager\"\nimport { isMacOsCatalina } from \"../../util/macosVersion\"\nimport { time } from \"../../util/timer\"\nimport { execWine } from \"../../wine\"\nimport { WinPackager } from \"../../winPackager\"\nimport { archive, ArchiveOptions } from \"../archive\"\nimport { appendBlockmap, configureDifferentialAwareArchiveOptions, createBlockmap, createNsisWebDifferentialUpdateInfo } from \"../differentialUpdateInfoBuilder\"\nimport { getWindowsInstallationDirName } from \"../targetUtil\"\nimport { addCustomMessageFileInclude, createAddLangsMacro, LangConfigurator } from \"./nsisLang\"\nimport { computeLicensePage } from \"./nsisLicense\"\nimport { NsisOptions, PortableOptions } from \"./nsisOptions\"\nimport { NsisScriptGenerator } from \"./nsisScriptGenerator\"\nimport { AppPackageHelper, NSIS_PATH, nsisTemplatesDir } from \"./nsisUtil\"\n\nconst debug = _debug(\"electron-builder:nsis\")\n\n// noinspection SpellCheckingInspection\nconst ELECTRON_BUILDER_NS_UUID = UUID.parse(\"50e065bc-3134-11e6-9bab-38c9862bdaf3\")\n\n// noinspection SpellCheckingInspection\nconst nsisResourcePathPromise = new Lazy(() => getBinFromUrl(\"nsis-resources\", \"3.4.1\", \"Dqd6g+2buwwvoG1Vyf6BHR1b+25QMmPcwZx40atOT57gH27rkjOei1L0JTldxZu4NFoEmW4kJgZ3DlSWVON3+Q==\"))\n\nconst USE_NSIS_BUILT_IN_COMPRESSOR = false\n\nexport class NsisTarget extends Target {\n readonly options: NsisOptions\n\n /** @private */\n readonly archs: Map<Arch, string> = new Map()\n\n constructor(readonly packager: WinPackager, readonly outDir: string, targetName: string, protected readonly packageHelper: AppPackageHelper) {\n super(targetName)\n\n this.packageHelper.refCount++\n\n this.options = targetName === \"portable\" ? Object.create(null) : {\n preCompressedFileExtensions: [\".avi\", \".mov\", \".m4v\", \".mp4\", \".m4p\", \".qt\", \".mkv\", \".webm\", \".vmdk\"],\n ...this.packager.config.nsis,\n }\n\n if (targetName !== \"nsis\") {\n Object.assign(this.options, (this.packager.config as any)[targetName === \"nsis-web\" ? \"nsisWeb\" : targetName])\n }\n\n const deps = packager.info.metadata.dependencies\n if (deps != null && deps[\"electron-squirrel-startup\"] != null) {\n log.warn('\"electron-squirrel-startup\" dependency is not required for NSIS')\n }\n }\n\n async build(appOutDir: string, arch: Arch) {\n this.archs.set(arch, appOutDir)\n }\n\n get isBuildDifferentialAware() {\n return !this.isPortable && this.options.differentialPackage !== false\n }\n\n private getPreCompressedFileExtensions(): Array<string> | null {\n const result = this.isWebInstaller ? null : this.options.preCompressedFileExtensions\n return result == null ? null : asArray(result).map(it => it.startsWith(\".\") ? it : `.${it}`)\n }\n\n /** @private */\n async buildAppPackage(appOutDir: string, arch: Arch): Promise<PackageFileInfo> {\n const options = this.options\n const packager = this.packager\n\n const isBuildDifferentialAware = this.isBuildDifferentialAware\n const format = !isBuildDifferentialAware && options.useZip ? \"zip\" : \"7z\"\n const archiveFile = path.join(this.outDir, `${packager.appInfo.sanitizedName}-${packager.appInfo.version}-${Arch[arch]}.nsis.${format}`)\n const preCompressedFileExtensions = this.getPreCompressedFileExtensions()\n const archiveOptions: ArchiveOptions = {\n withoutDir: true,\n compression: packager.compression,\n excluded: preCompressedFileExtensions == null ? null : preCompressedFileExtensions.map(it => `*${it}`)\n }\n\n const timer = time(`nsis package, ${Arch[arch]}`)\n await archive(format, archiveFile, appOutDir, isBuildDifferentialAware ? configureDifferentialAwareArchiveOptions(archiveOptions) : archiveOptions)\n timer.end()\n\n if (isBuildDifferentialAware && this.isWebInstaller) {\n const data = await appendBlockmap(archiveFile)\n return {\n ...data,\n path: archiveFile,\n }\n }\n else {\n return await createPackageFileInfo(archiveFile)\n }\n }\n\n async finishBuild(): Promise<any> {\n try {\n await this.buildInstaller()\n }\n finally {\n await this.packageHelper.finishBuild()\n }\n }\n\n protected get installerFilenamePattern(): string {\n // tslint:disable:no-invalid-template-strings\n return \"${productName} \" + (this.isPortable ? \"\" : \"Setup \") + \"${version}.${ext}\"\n }\n\n private get isPortable() {\n return this.name === \"portable\"\n }\n\n private async buildInstaller(): Promise<any> {\n const packager = this.packager\n const appInfo = packager.appInfo\n const options = this.options\n const installerFilename = packager.expandArtifactNamePattern(options, \"exe\", null, this.installerFilenamePattern)\n const oneClick = options.oneClick !== false\n const installerPath = path.join(this.outDir, installerFilename)\n\n const logFields: any = {\n target: this.name,\n file: log.filePath(installerPath),\n archs: Array.from(this.archs.keys()).map(it => Arch[it]).join(\", \"),\n }\n const isPerMachine = options.perMachine === true\n if (!this.isPortable) {\n logFields.oneClick = oneClick\n logFields.perMachine = isPerMachine\n }\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: this.name,\n file: installerPath,\n arch: null,\n }, logFields)\n\n const guid = options.guid || UUID.v5(appInfo.id, ELECTRON_BUILDER_NS_UUID)\n const uninstallAppKey = guid.replace(/\\\\/g, \" - \")\n const defines: any = {\n APP_ID: appInfo.id,\n APP_GUID: guid,\n // Windows bug - entry in Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall cannot have \\ symbols (dir)\n UNINSTALL_APP_KEY: uninstallAppKey,\n PRODUCT_NAME: appInfo.productName,\n PRODUCT_FILENAME: appInfo.productFilename,\n APP_FILENAME: getWindowsInstallationDirName(appInfo, !oneClick || isPerMachine),\n APP_DESCRIPTION: appInfo.description,\n VERSION: appInfo.version,\n\n PROJECT_DIR: packager.projectDir,\n BUILD_RESOURCES_DIR: packager.info.buildResourcesDir,\n\n APP_PACKAGE_NAME: appInfo.name\n }\n if (uninstallAppKey !== guid) {\n defines.UNINSTALL_REGISTRY_KEY_2 = `Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall\\\\{${guid}}`\n }\n\n const commands: any = {\n OutFile: `\"${installerPath}\"`,\n VIProductVersion: appInfo.getVersionInWeirdWindowsForm(),\n VIAddVersionKey: this.computeVersionKey(),\n Unicode: this.isUnicodeEnabled,\n }\n\n const isPortable = this.isPortable\n const iconPath = (isPortable ? null : await packager.getResource(options.installerIcon, \"installerIcon.ico\")) || await packager.getIconPath()\n if (iconPath != null) {\n if (isPortable) {\n commands.Icon = `\"${iconPath}\"`\n }\n else {\n defines.MUI_ICON = iconPath\n defines.MUI_UNICON = iconPath\n }\n }\n\n const packageFiles: { [arch: string]: PackageFileInfo } = {}\n let estimatedSize = 0\n if (this.isPortable && options.useZip) {\n for (const [arch, dir] of this.archs.entries()) {\n defines[arch === Arch.x64 ? \"APP_DIR_64\" : \"APP_DIR_32\"] = dir\n }\n }\n else if (USE_NSIS_BUILT_IN_COMPRESSOR && this.archs.size === 1) {\n defines.APP_BUILD_DIR = this.archs.get(this.archs.keys().next().value)\n }\n else {\n await BluebirdPromise.map(this.archs.keys(), async arch => {\n const fileInfo = await this.packageHelper.packArch(arch, this)\n const file = fileInfo.path\n const defineKey = arch === Arch.x64 ? \"APP_64\" : \"APP_32\"\n defines[defineKey] = file\n defines[`${defineKey}_NAME`] = path.basename(file)\n // nsis expect a hexadecimal string\n defines[`${defineKey}_HASH`] = Buffer.from(fileInfo.sha512, \"base64\").toString(\"hex\").toUpperCase()\n\n if (this.isWebInstaller) {\n await packager.dispatchArtifactCreated(file, this, arch)\n packageFiles[Arch[arch]] = fileInfo\n }\n\n const archiveInfo = (await exec(path7za, [\"l\", file])).trim()\n // after adding blockmap data will be \"Warnings: 1\" in the end of output\n const match = archiveInfo.match(/(\\d+)\\s+\\d+\\s+\\d+\\s+files/)\n if (match == null) {\n log.warn({output: archiveInfo}, \"cannot compute size of app package\")\n }\n else {\n estimatedSize += parseInt(match[1], 10)\n }\n })\n }\n\n this.configureDefinesForAllTypeOfInstaller(defines)\n if (isPortable) {\n const portableOptions = options as PortableOptions\n defines.REQUEST_EXECUTION_LEVEL = portableOptions.requestExecutionLevel || \"user\"\n defines.UNPACK_DIR_NAME = portableOptions.unpackDirName || (await executeAppBuilder([\"ksuid\"]))\n }\n else {\n await this.configureDefines(oneClick, defines)\n }\n\n if (estimatedSize !== 0) {\n // in kb\n defines.ESTIMATED_SIZE = Math.round(estimatedSize / 1024)\n }\n\n if (packager.compression === \"store\") {\n commands.SetCompress = \"off\"\n }\n else {\n // difference - 33.540 vs 33.601, only 61 KB (but zip is faster to decompress)\n // do not use /SOLID - \"With solid compression, files are uncompressed to temporary file before they are copied to their final destination\",\n // it is not good for portable installer (where built-in NSIS compression is used). http://forums.winamp.com/showpost.php?p=2982902&postcount=6\n commands.SetCompressor = \"zlib\"\n if (!this.isWebInstaller) {\n defines.COMPRESS = \"auto\"\n }\n }\n\n debug(defines)\n debug(commands)\n\n if (packager.packagerOptions.effectiveOptionComputed != null && await packager.packagerOptions.effectiveOptionComputed([defines, commands])) {\n return\n }\n\n const sharedHeader = await this.computeCommonInstallerScriptHeader()\n const script = isPortable ? await readFile(path.join(nsisTemplatesDir, \"portable.nsi\"), \"utf8\") : await this.computeScriptAndSignUninstaller(defines, commands, installerPath, sharedHeader)\n await this.executeMakensis(defines, commands, sharedHeader + await this.computeFinalScript(script, true))\n await Promise.all<any>([packager.sign(installerPath), defines.UNINSTALLER_OUT_FILE == null ? Promise.resolve() : unlink(defines.UNINSTALLER_OUT_FILE)])\n\n const safeArtifactName = computeSafeArtifactNameIfNeeded(installerFilename, () => this.generateGitHubInstallerName())\n let updateInfo: any\n if (this.isWebInstaller) {\n updateInfo = createNsisWebDifferentialUpdateInfo(installerPath, packageFiles)\n }\n else if (this.isBuildDifferentialAware) {\n updateInfo = await createBlockmap(installerPath, this, packager, safeArtifactName)\n }\n\n if (updateInfo != null && isPerMachine && oneClick) {\n updateInfo.isAdminRightsRequired = true\n }\n\n await packager.info.callArtifactBuildCompleted({\n file: installerPath,\n updateInfo,\n target: this,\n packager,\n arch: this.archs.size === 1 ? this.archs.keys().next().value : null,\n safeArtifactName,\n isWriteUpdateInfo: !this.isPortable,\n })\n }\n\n protected generateGitHubInstallerName() {\n const appInfo = this.packager.appInfo\n const classifier = appInfo.name.toLowerCase() === appInfo.name ? \"setup-\" : \"Setup-\"\n return `${appInfo.name}-${this.isPortable ? \"\" : classifier}${appInfo.version}.exe`\n }\n\n private get isUnicodeEnabled() {\n return this.options.unicode !== false\n }\n\n get isWebInstaller(): boolean {\n return false\n }\n\n private async computeScriptAndSignUninstaller(defines: any, commands: any, installerPath: string, sharedHeader: string) {\n const packager = this.packager\n const customScriptPath = await packager.getResource(this.options.script, \"installer.nsi\")\n const script = await readFile(customScriptPath || path.join(nsisTemplatesDir, \"installer.nsi\"), \"utf8\")\n\n if (customScriptPath != null) {\n log.info({reason: \"custom NSIS script is used\"}, \"uninstaller is not signed by electron-builder\")\n return script\n }\n\n // https://github.com/electron-userland/electron-builder/issues/2103\n // it is more safe and reliable to write uninstaller to our out dir\n const uninstallerPath = path.join(this.outDir, `__uninstaller-${this.name}-${this.packager.appInfo.sanitizedName}.exe`)\n const isWin = process.platform === \"win32\"\n defines.BUILD_UNINSTALLER = null\n defines.UNINSTALLER_OUT_FILE = isWin ? uninstallerPath : path.win32.join(\"Z:\", uninstallerPath)\n await this.executeMakensis(defines, commands, sharedHeader + await this.computeFinalScript(script, false))\n\n // http://forums.winamp.com/showthread.php?p=3078545\n if (isMacOsCatalina()) {\n (await packager.vm.value).exec(installerPath, [])\n\n // Parallels VM can exit after command execution, but NSIS continue to be running\n let i = 0\n while (!(await exists(uninstallerPath)) && i++ < 100) {\n // noinspection JSUnusedLocalSymbols\n await new Promise((resolve, _reject) => setTimeout(resolve, 300))\n }\n }\n else {\n await execWine(installerPath)\n }\n await packager.sign(uninstallerPath, \" Signing NSIS uninstaller\")\n\n delete defines.BUILD_UNINSTALLER\n // platform-specific path, not wine\n defines.UNINSTALLER_OUT_FILE = uninstallerPath\n return script\n }\n\n private computeVersionKey() {\n // Error: invalid VIProductVersion format, should be X.X.X.X\n // so, we must strip beta\n const localeId = this.options.language || \"1033\"\n const appInfo = this.packager.appInfo\n const versionKey = [\n `/LANG=${localeId} ProductName \"${appInfo.productName}\"`,\n `/LANG=${localeId} ProductVersion \"${appInfo.version}\"`,\n `/LANG=${localeId} LegalCopyright \"${appInfo.copyright}\"`,\n `/LANG=${localeId} FileDescription \"${appInfo.description}\"`,\n `/LANG=${localeId} FileVersion \"${appInfo.buildVersion}\"`,\n ]\n use(this.packager.platformSpecificBuildOptions.legalTrademarks, it => versionKey.push(`/LANG=${localeId} LegalTrademarks \"${it}\"`))\n use(appInfo.companyName, it => versionKey.push(`/LANG=${localeId} CompanyName \"${it}\"`))\n return versionKey\n }\n\n protected configureDefines(oneClick: boolean, defines: any): Promise<any> {\n const packager = this.packager\n const options = this.options\n\n const asyncTaskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n if (oneClick) {\n defines.ONE_CLICK = null\n\n if (options.runAfterFinish !== false) {\n defines.RUN_AFTER_FINISH = null\n }\n\n asyncTaskManager.add(async () => {\n const installerHeaderIcon = await packager.getResource(options.installerHeaderIcon, \"installerHeaderIcon.ico\")\n if (installerHeaderIcon != null) {\n defines.HEADER_ICO = installerHeaderIcon\n }\n })\n }\n else {\n if (options.runAfterFinish === false) {\n defines.HIDE_RUN_AFTER_FINISH = null\n }\n\n asyncTaskManager.add(async () => {\n const installerHeader = await packager.getResource(options.installerHeader, \"installerHeader.bmp\")\n if (installerHeader != null) {\n defines.MUI_HEADERIMAGE = null\n defines.MUI_HEADERIMAGE_RIGHT = null\n defines.MUI_HEADERIMAGE_BITMAP = installerHeader\n }\n })\n\n asyncTaskManager.add(async () => {\n const bitmap = (await packager.getResource(options.installerSidebar, \"installerSidebar.bmp\")) || \"${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp\"\n defines.MUI_WELCOMEFINISHPAGE_BITMAP = bitmap\n defines.MUI_UNWELCOMEFINISHPAGE_BITMAP = (await packager.getResource(options.uninstallerSidebar, \"uninstallerSidebar.bmp\")) || bitmap\n })\n\n if (options.allowElevation !== false) {\n defines.MULTIUSER_INSTALLMODE_ALLOW_ELEVATION = null\n }\n }\n\n if (options.perMachine === true) {\n defines.INSTALL_MODE_PER_ALL_USERS = null\n }\n\n if (!oneClick || options.perMachine === true) {\n defines.INSTALL_MODE_PER_ALL_USERS_REQUIRED = null\n }\n\n if (options.allowToChangeInstallationDirectory) {\n if (oneClick) {\n throw new InvalidConfigurationError(\"allowToChangeInstallationDirectory makes sense only for assisted installer (please set oneClick to false)\")\n }\n defines.allowToChangeInstallationDirectory = null\n }\n\n const commonOptions = getEffectiveOptions(options, packager)\n\n if (commonOptions.menuCategory != null) {\n defines.MENU_FILENAME = commonOptions.menuCategory\n }\n\n defines.SHORTCUT_NAME = commonOptions.shortcutName\n\n if (options.deleteAppDataOnUninstall) {\n defines.DELETE_APP_DATA_ON_UNINSTALL = null\n }\n\n asyncTaskManager.add(async () => {\n const uninstallerIcon = await packager.getResource(options.uninstallerIcon, \"uninstallerIcon.ico\")\n if (uninstallerIcon != null) {\n // we don't need to copy MUI_UNICON (defaults to app icon), so, we have 2 defines\n defines.UNINSTALLER_ICON = uninstallerIcon\n defines.MUI_UNICON = uninstallerIcon\n }\n })\n\n defines.UNINSTALL_DISPLAY_NAME = packager.expandMacro(options.uninstallDisplayName || \"${productName} ${version}\", null, {}, false)\n if (commonOptions.isCreateDesktopShortcut === DesktopShortcutCreationPolicy.NEVER) {\n defines.DO_NOT_CREATE_DESKTOP_SHORTCUT = null\n }\n if (commonOptions.isCreateDesktopShortcut === DesktopShortcutCreationPolicy.ALWAYS) {\n defines.RECREATE_DESKTOP_SHORTCUT = null\n }\n if (!commonOptions.isCreateStartMenuShortcut) {\n defines.DO_NOT_CREATE_START_MENU_SHORTCUT = null\n }\n\n if (options.displayLanguageSelector === true) {\n defines.DISPLAY_LANG_SELECTOR = null\n }\n\n return asyncTaskManager.awaitTasks()\n }\n\n private configureDefinesForAllTypeOfInstaller(defines: any) {\n const appInfo = this.packager.appInfo\n const companyName = appInfo.companyName\n if (companyName != null) {\n defines.COMPANY_NAME = companyName\n }\n\n // electron uses product file name as app data, define it as well to remove on uninstall\n if (defines.APP_FILENAME !== appInfo.productFilename) {\n defines.APP_PRODUCT_FILENAME = appInfo.productFilename\n }\n\n if (this.isWebInstaller) {\n defines.APP_PACKAGE_STORE_FILE = `${appInfo.updaterCacheDirName}\\\\${CURRENT_APP_PACKAGE_FILE_NAME}`\n }\n else {\n defines.APP_INSTALLER_STORE_FILE = `${appInfo.updaterCacheDirName}\\\\${CURRENT_APP_INSTALLER_FILE_NAME}`\n }\n\n if (!this.isWebInstaller && defines.APP_BUILD_DIR == null) {\n const options = this.options\n if (options.useZip) {\n defines.ZIP_COMPRESSION = null\n }\n\n defines.COMPRESSION_METHOD = options.useZip ? \"zip\" : \"7z\"\n }\n }\n\n private async executeMakensis(defines: any, commands: any, script: string) {\n const args: Array<string> = (this.options.warningsAsErrors === false) ? [] : [\"-WX\"]\n for (const name of Object.keys(defines)) {\n const value = defines[name]\n if (value == null) {\n args.push(`-D${name}`)\n }\n else {\n args.push(`-D${name}=${value}`)\n }\n }\n\n for (const name of Object.keys(commands)) {\n const value = commands[name]\n if (Array.isArray(value)) {\n for (const c of value) {\n args.push(`-X${name} ${c}`)\n }\n }\n else {\n args.push(`-X${name} ${value}`)\n }\n }\n\n args.push(\"-\")\n\n if (this.packager.debugLogger.isEnabled) {\n this.packager.debugLogger.add(\"nsis.script\", script)\n }\n\n const nsisPath = await NSIS_PATH.value\n const command = path.join(nsisPath, process.platform === \"darwin\" ? \"mac\" : (process.platform === \"win32\" ? \"Bin\" : \"linux\"), process.platform === \"win32\" ? \"makensis.exe\" : \"makensis\")\n await spawnAndWrite(command, args, script, {\n // we use NSIS_CONFIG_CONST_DATA_PATH=no to build makensis on Linux, but in any case it doesn't use stubs as MacOS/Windows version, so, we explicitly set NSISDIR\n env: {...process.env, NSISDIR: nsisPath},\n cwd: nsisTemplatesDir,\n })\n }\n\n private async computeCommonInstallerScriptHeader() {\n const packager = this.packager\n const options = this.options\n const scriptGenerator = new NsisScriptGenerator()\n const langConfigurator = new LangConfigurator(options)\n\n scriptGenerator.include(path.join(nsisTemplatesDir, \"include\", \"StdUtils.nsh\"))\n\n const includeDir = path.join(nsisTemplatesDir, \"include\")\n scriptGenerator.addIncludeDir(includeDir)\n scriptGenerator.flags([\"updated\", \"force-run\", \"keep-shortcuts\", \"no-desktop-shortcut\", \"delete-app-data\", \"allusers\", \"currentuser\"])\n\n createAddLangsMacro(scriptGenerator, langConfigurator)\n\n const taskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n const pluginArch = this.isUnicodeEnabled ? \"x86-unicode\" : \"x86-ansi\"\n taskManager.add(async () => {\n scriptGenerator.addPluginDir(pluginArch, path.join(await nsisResourcePathPromise.value, \"plugins\", pluginArch))\n })\n\n taskManager.add(async () => {\n const userPluginDir = path.join(packager.info.buildResourcesDir, pluginArch)\n const stat = await statOrNull(userPluginDir)\n if (stat != null && stat.isDirectory()) {\n scriptGenerator.addPluginDir(pluginArch, userPluginDir)\n }\n })\n\n taskManager.addTask(addCustomMessageFileInclude(\"messages.yml\", packager, scriptGenerator, langConfigurator))\n\n if (!this.isPortable) {\n if (options.oneClick === false) {\n taskManager.addTask(addCustomMessageFileInclude(\"assistedMessages.yml\", packager, scriptGenerator, langConfigurator))\n }\n\n taskManager.add(async () => {\n const customInclude = await packager.getResource(this.options.include, \"installer.nsh\")\n if (customInclude != null) {\n scriptGenerator.addIncludeDir(packager.info.buildResourcesDir)\n scriptGenerator.include(customInclude)\n }\n })\n }\n\n await taskManager.awaitTasks()\n return scriptGenerator.build()\n }\n\n private async computeFinalScript(originalScript: string, isInstaller: boolean) {\n const packager = this.packager\n const options = this.options\n const langConfigurator = new LangConfigurator(options)\n\n const scriptGenerator = new NsisScriptGenerator()\n const taskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n if (isInstaller) {\n // http://stackoverflow.com/questions/997456/nsis-license-file-based-on-language-selection\n taskManager.add(() => computeLicensePage(packager, options, scriptGenerator, langConfigurator.langs))\n }\n\n await taskManager.awaitTasks()\n\n if (this.isPortable) {\n return scriptGenerator.build() + originalScript\n }\n\n const preCompressedFileExtensions = this.getPreCompressedFileExtensions()\n if (preCompressedFileExtensions != null && preCompressedFileExtensions.length !== 0) {\n for (const [arch, dir] of this.archs.entries()) {\n await generateForPreCompressed(preCompressedFileExtensions, dir, arch, scriptGenerator)\n }\n }\n\n const fileAssociations = packager.fileAssociations\n if (fileAssociations.length !== 0) {\n\n scriptGenerator.include(path.join(path.join(nsisTemplatesDir, \"include\"), \"FileAssociation.nsh\"))\n if (isInstaller) {\n const registerFileAssociationsScript = new NsisScriptGenerator()\n for (const item of fileAssociations) {\n const extensions = asArray(item.ext).map(normalizeExt)\n for (const ext of extensions) {\n const customIcon = await packager.getResource(getPlatformIconFileName(item.icon, false), `${extensions[0]}.ico`)\n let installedIconPath = \"$appExe,0\"\n if (customIcon != null) {\n installedIconPath = `$INSTDIR\\\\resources\\\\${path.basename(customIcon)}`\n registerFileAssociationsScript.file(installedIconPath, customIcon)\n }\n\n const icon = `\"${installedIconPath}\"`\n const commandText = `\"Open with ${packager.appInfo.productName}\"`\n const command = '\"$appExe $\\\\\"%1$\\\\\"\"'\n registerFileAssociationsScript.insertMacro(\"APP_ASSOCIATE\", `\"${ext}\" \"${item.name || ext}\" \"${item.description || \"\"}\" ${icon} ${commandText} ${command}`)\n }\n }\n scriptGenerator.macro(\"registerFileAssociations\", registerFileAssociationsScript)\n }\n else {\n const unregisterFileAssociationsScript = new NsisScriptGenerator()\n for (const item of fileAssociations) {\n for (const ext of asArray(item.ext)) {\n unregisterFileAssociationsScript.insertMacro(\"APP_UNASSOCIATE\", `\"${normalizeExt(ext)}\" \"${item.name || ext}\"`)\n }\n }\n scriptGenerator.macro(\"unregisterFileAssociations\", unregisterFileAssociationsScript)\n }\n }\n\n return scriptGenerator.build() + originalScript\n }\n}\n\nasync function generateForPreCompressed(preCompressedFileExtensions: Array<string>, dir: string, arch: Arch, scriptGenerator: NsisScriptGenerator) {\n const resourcesDir = path.join(dir, \"resources\")\n const dirInfo = await statOrNull(resourcesDir)\n if (dirInfo == null || !dirInfo.isDirectory()) {\n return\n }\n\n const nodeModules = `${path.sep}node_modules`\n const preCompressedAssets = await walk(resourcesDir, (file, stat) => {\n if (stat.isDirectory()) {\n return !file.endsWith(nodeModules)\n }\n else {\n return preCompressedFileExtensions.some(it => file.endsWith(it))\n }\n })\n\n if (preCompressedAssets.length !== 0) {\n const macro = new NsisScriptGenerator()\n for (const file of preCompressedAssets) {\n macro.file(`$INSTDIR\\\\${path.relative(dir, file).replace(/\\//g, \"\\\\\")}`, file)\n }\n scriptGenerator.macro(`customFiles_${Arch[arch]}`, macro)\n }\n}\n\nasync function createPackageFileInfo(file: string): Promise<PackageFileInfo> {\n return {\n path: file,\n size: (await stat(file)).size,\n sha512: await hashFile(file),\n }\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../../src/targets/nsis/NsisTarget.ts"],"names":[],"mappings":"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","sourcesContent":["import { path7za } from \"7zip-bin\"\nimport BluebirdPromise from \"bluebird-lst\"\nimport { executeAppBuilder, Arch, asArray, AsyncTaskManager, getPlatformIconFileName, InvalidConfigurationError, log, spawnAndWrite, use, exec } from \"builder-util\"\nimport { PackageFileInfo, UUID, CURRENT_APP_PACKAGE_FILE_NAME, CURRENT_APP_INSTALLER_FILE_NAME } from \"builder-util-runtime\"\nimport { getBinFromUrl } from \"../../binDownload\"\nimport { statOrNull, walk, exists } from \"builder-util/out/fs\"\nimport { hashFile } from \"../../util/hash\"\nimport _debug from \"debug\"\nimport { readFile, stat, unlink } from \"fs-extra\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { Target } from \"../../core\"\nimport { DesktopShortcutCreationPolicy, getEffectiveOptions } from \"../../options/CommonWindowsInstallerConfiguration\"\nimport { computeSafeArtifactNameIfNeeded, normalizeExt } from \"../../platformPackager\"\nimport { isMacOsCatalina } from \"../../util/macosVersion\"\nimport { time } from \"../../util/timer\"\nimport { execWine } from \"../../wine\"\nimport { WinPackager } from \"../../winPackager\"\nimport { archive, ArchiveOptions } from \"../archive\"\nimport { appendBlockmap, configureDifferentialAwareArchiveOptions, createBlockmap, createNsisWebDifferentialUpdateInfo } from \"../differentialUpdateInfoBuilder\"\nimport { getWindowsInstallationDirName } from \"../targetUtil\"\nimport { addCustomMessageFileInclude, createAddLangsMacro, LangConfigurator } from \"./nsisLang\"\nimport { computeLicensePage } from \"./nsisLicense\"\nimport { NsisOptions, PortableOptions } from \"./nsisOptions\"\nimport { NsisScriptGenerator } from \"./nsisScriptGenerator\"\nimport { AppPackageHelper, NSIS_PATH, nsisTemplatesDir, UninstallerReader } from \"./nsisUtil\"\n\nconst debug = _debug(\"electron-builder:nsis\")\n\n// noinspection SpellCheckingInspection\nconst ELECTRON_BUILDER_NS_UUID = UUID.parse(\"50e065bc-3134-11e6-9bab-38c9862bdaf3\")\n\n// noinspection SpellCheckingInspection\nconst nsisResourcePathPromise = new Lazy(() => getBinFromUrl(\"nsis-resources\", \"3.4.1\", \"Dqd6g+2buwwvoG1Vyf6BHR1b+25QMmPcwZx40atOT57gH27rkjOei1L0JTldxZu4NFoEmW4kJgZ3DlSWVON3+Q==\"))\n\nconst USE_NSIS_BUILT_IN_COMPRESSOR = false\n\nexport class NsisTarget extends Target {\n readonly options: NsisOptions\n\n /** @private */\n readonly archs: Map<Arch, string> = new Map()\n\n constructor(readonly packager: WinPackager, readonly outDir: string, targetName: string, protected readonly packageHelper: AppPackageHelper) {\n super(targetName)\n\n this.packageHelper.refCount++\n\n this.options = targetName === \"portable\" ? Object.create(null) : {\n preCompressedFileExtensions: [\".avi\", \".mov\", \".m4v\", \".mp4\", \".m4p\", \".qt\", \".mkv\", \".webm\", \".vmdk\"],\n ...this.packager.config.nsis,\n }\n\n if (targetName !== \"nsis\") {\n Object.assign(this.options, (this.packager.config as any)[targetName === \"nsis-web\" ? \"nsisWeb\" : targetName])\n }\n\n const deps = packager.info.metadata.dependencies\n if (deps != null && deps[\"electron-squirrel-startup\"] != null) {\n log.warn('\"electron-squirrel-startup\" dependency is not required for NSIS')\n }\n }\n\n async build(appOutDir: string, arch: Arch) {\n this.archs.set(arch, appOutDir)\n }\n\n get isBuildDifferentialAware() {\n return !this.isPortable && this.options.differentialPackage !== false\n }\n\n private getPreCompressedFileExtensions(): Array<string> | null {\n const result = this.isWebInstaller ? null : this.options.preCompressedFileExtensions\n return result == null ? null : asArray(result).map(it => it.startsWith(\".\") ? it : `.${it}`)\n }\n\n /** @private */\n async buildAppPackage(appOutDir: string, arch: Arch): Promise<PackageFileInfo> {\n const options = this.options\n const packager = this.packager\n\n const isBuildDifferentialAware = this.isBuildDifferentialAware\n const format = !isBuildDifferentialAware && options.useZip ? \"zip\" : \"7z\"\n const archiveFile = path.join(this.outDir, `${packager.appInfo.sanitizedName}-${packager.appInfo.version}-${Arch[arch]}.nsis.${format}`)\n const preCompressedFileExtensions = this.getPreCompressedFileExtensions()\n const archiveOptions: ArchiveOptions = {\n withoutDir: true,\n compression: packager.compression,\n excluded: preCompressedFileExtensions == null ? null : preCompressedFileExtensions.map(it => `*${it}`)\n }\n\n const timer = time(`nsis package, ${Arch[arch]}`)\n await archive(format, archiveFile, appOutDir, isBuildDifferentialAware ? configureDifferentialAwareArchiveOptions(archiveOptions) : archiveOptions)\n timer.end()\n\n if (isBuildDifferentialAware && this.isWebInstaller) {\n const data = await appendBlockmap(archiveFile)\n return {\n ...data,\n path: archiveFile,\n }\n }\n else {\n return await createPackageFileInfo(archiveFile)\n }\n }\n\n async finishBuild(): Promise<any> {\n try {\n await this.buildInstaller()\n }\n finally {\n await this.packageHelper.finishBuild()\n }\n }\n\n protected get installerFilenamePattern(): string {\n // tslint:disable:no-invalid-template-strings\n return \"${productName} \" + (this.isPortable ? \"\" : \"Setup \") + \"${version}.${ext}\"\n }\n\n private get isPortable() {\n return this.name === \"portable\"\n }\n\n private async buildInstaller(): Promise<any> {\n const packager = this.packager\n const appInfo = packager.appInfo\n const options = this.options\n const installerFilename = packager.expandArtifactNamePattern(options, \"exe\", null, this.installerFilenamePattern)\n const oneClick = options.oneClick !== false\n const installerPath = path.join(this.outDir, installerFilename)\n\n const logFields: any = {\n target: this.name,\n file: log.filePath(installerPath),\n archs: Array.from(this.archs.keys()).map(it => Arch[it]).join(\", \"),\n }\n const isPerMachine = options.perMachine === true\n if (!this.isPortable) {\n logFields.oneClick = oneClick\n logFields.perMachine = isPerMachine\n }\n\n await packager.info.callArtifactBuildStarted({\n targetPresentableName: this.name,\n file: installerPath,\n arch: null,\n }, logFields)\n\n const guid = options.guid || UUID.v5(appInfo.id, ELECTRON_BUILDER_NS_UUID)\n const uninstallAppKey = guid.replace(/\\\\/g, \" - \")\n const defines: any = {\n APP_ID: appInfo.id,\n APP_GUID: guid,\n // Windows bug - entry in Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall cannot have \\ symbols (dir)\n UNINSTALL_APP_KEY: uninstallAppKey,\n PRODUCT_NAME: appInfo.productName,\n PRODUCT_FILENAME: appInfo.productFilename,\n APP_FILENAME: getWindowsInstallationDirName(appInfo, !oneClick || isPerMachine),\n APP_DESCRIPTION: appInfo.description,\n VERSION: appInfo.version,\n\n PROJECT_DIR: packager.projectDir,\n BUILD_RESOURCES_DIR: packager.info.buildResourcesDir,\n\n APP_PACKAGE_NAME: appInfo.name\n }\n if (uninstallAppKey !== guid) {\n defines.UNINSTALL_REGISTRY_KEY_2 = `Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Uninstall\\\\${guid}`\n }\n\n const commands: any = {\n OutFile: `\"${installerPath}\"`,\n VIProductVersion: appInfo.getVersionInWeirdWindowsForm(),\n VIAddVersionKey: this.computeVersionKey(),\n Unicode: this.isUnicodeEnabled,\n }\n\n const isPortable = this.isPortable\n const iconPath = (isPortable ? null : await packager.getResource(options.installerIcon, \"installerIcon.ico\")) || await packager.getIconPath()\n if (iconPath != null) {\n if (isPortable) {\n commands.Icon = `\"${iconPath}\"`\n }\n else {\n defines.MUI_ICON = iconPath\n defines.MUI_UNICON = iconPath\n }\n }\n\n const packageFiles: { [arch: string]: PackageFileInfo } = {}\n let estimatedSize = 0\n if (this.isPortable && options.useZip) {\n for (const [arch, dir] of this.archs.entries()) {\n defines[arch === Arch.x64 ? \"APP_DIR_64\" : (arch === Arch.arm64 ? \"APP_DIR_ARM64\" : \"APP_DIR_32\")] = dir\n }\n }\n else if (USE_NSIS_BUILT_IN_COMPRESSOR && this.archs.size === 1) {\n defines.APP_BUILD_DIR = this.archs.get(this.archs.keys().next().value)\n }\n else {\n await BluebirdPromise.map(this.archs.keys(), async arch => {\n const fileInfo = await this.packageHelper.packArch(arch, this)\n const file = fileInfo.path\n const defineKey = arch === Arch.x64 ? \"APP_64\" : (arch === Arch.arm64 ? \"APP_ARM64\" : \"APP_32\")\n defines[defineKey] = file\n defines[`${defineKey}_NAME`] = path.basename(file)\n // nsis expect a hexadecimal string\n defines[`${defineKey}_HASH`] = Buffer.from(fileInfo.sha512, \"base64\").toString(\"hex\").toUpperCase()\n\n if (this.isWebInstaller) {\n await packager.dispatchArtifactCreated(file, this, arch)\n packageFiles[Arch[arch]] = fileInfo\n }\n\n const archiveInfo = (await exec(path7za, [\"l\", file])).trim()\n // after adding blockmap data will be \"Warnings: 1\" in the end of output\n const match = archiveInfo.match(/(\\d+)\\s+\\d+\\s+\\d+\\s+files/)\n if (match == null) {\n log.warn({output: archiveInfo}, \"cannot compute size of app package\")\n }\n else {\n estimatedSize += parseInt(match[1], 10)\n }\n })\n }\n\n this.configureDefinesForAllTypeOfInstaller(defines)\n if (isPortable) {\n const portableOptions = options as PortableOptions\n defines.REQUEST_EXECUTION_LEVEL = portableOptions.requestExecutionLevel || \"user\"\n defines.UNPACK_DIR_NAME = portableOptions.unpackDirName || (await executeAppBuilder([\"ksuid\"]))\n\n if (portableOptions.splashImage != null) {\n defines.SPLASH_IMAGE = portableOptions.splashImage\n }\n }\n else {\n await this.configureDefines(oneClick, defines)\n }\n\n if (estimatedSize !== 0) {\n // in kb\n defines.ESTIMATED_SIZE = Math.round(estimatedSize / 1024)\n }\n\n if (packager.compression === \"store\") {\n commands.SetCompress = \"off\"\n }\n else {\n // difference - 33.540 vs 33.601, only 61 KB (but zip is faster to decompress)\n // do not use /SOLID - \"With solid compression, files are uncompressed to temporary file before they are copied to their final destination\",\n // it is not good for portable installer (where built-in NSIS compression is used). http://forums.winamp.com/showpost.php?p=2982902&postcount=6\n commands.SetCompressor = \"zlib\"\n if (!this.isWebInstaller) {\n defines.COMPRESS = \"auto\"\n }\n }\n\n debug(defines)\n debug(commands)\n\n if (packager.packagerOptions.effectiveOptionComputed != null && await packager.packagerOptions.effectiveOptionComputed([defines, commands])) {\n return\n }\n\n const sharedHeader = await this.computeCommonInstallerScriptHeader()\n const script = isPortable ? await readFile(path.join(nsisTemplatesDir, \"portable.nsi\"), \"utf8\") : await this.computeScriptAndSignUninstaller(defines, commands, installerPath, sharedHeader)\n await this.executeMakensis(defines, commands, sharedHeader + await this.computeFinalScript(script, true))\n await Promise.all<any>([packager.sign(installerPath), defines.UNINSTALLER_OUT_FILE == null ? Promise.resolve() : unlink(defines.UNINSTALLER_OUT_FILE)])\n\n const safeArtifactName = computeSafeArtifactNameIfNeeded(installerFilename, () => this.generateGitHubInstallerName())\n let updateInfo: any\n if (this.isWebInstaller) {\n updateInfo = createNsisWebDifferentialUpdateInfo(installerPath, packageFiles)\n }\n else if (this.isBuildDifferentialAware) {\n updateInfo = await createBlockmap(installerPath, this, packager, safeArtifactName)\n }\n\n if (updateInfo != null && isPerMachine && oneClick) {\n updateInfo.isAdminRightsRequired = true\n }\n\n await packager.info.callArtifactBuildCompleted({\n file: installerPath,\n updateInfo,\n target: this,\n packager,\n arch: this.archs.size === 1 ? this.archs.keys().next().value : null,\n safeArtifactName,\n isWriteUpdateInfo: !this.isPortable,\n })\n }\n\n protected generateGitHubInstallerName() {\n const appInfo = this.packager.appInfo\n const classifier = appInfo.name.toLowerCase() === appInfo.name ? \"setup-\" : \"Setup-\"\n return `${appInfo.name}-${this.isPortable ? \"\" : classifier}${appInfo.version}.exe`\n }\n\n private get isUnicodeEnabled() {\n return this.options.unicode !== false\n }\n\n get isWebInstaller(): boolean {\n return false\n }\n\n private async computeScriptAndSignUninstaller(defines: any, commands: any, installerPath: string, sharedHeader: string) {\n const packager = this.packager\n const customScriptPath = await packager.getResource(this.options.script, \"installer.nsi\")\n const script = await readFile(customScriptPath || path.join(nsisTemplatesDir, \"installer.nsi\"), \"utf8\")\n\n if (customScriptPath != null) {\n log.info({reason: \"custom NSIS script is used\"}, \"uninstaller is not signed by electron-builder\")\n return script\n }\n\n // https://github.com/electron-userland/electron-builder/issues/2103\n // it is more safe and reliable to write uninstaller to our out dir\n const uninstallerPath = path.join(this.outDir, `__uninstaller-${this.name}-${this.packager.appInfo.sanitizedName}.exe`)\n const isWin = process.platform === \"win32\"\n defines.BUILD_UNINSTALLER = null\n defines.UNINSTALLER_OUT_FILE = isWin ? uninstallerPath : path.win32.join(\"Z:\", uninstallerPath)\n await this.executeMakensis(defines, commands, sharedHeader + await this.computeFinalScript(script, false))\n\n // http://forums.winamp.com/showthread.php?p=3078545\n if (isMacOsCatalina()) {\n try {\n UninstallerReader.exec(installerPath, uninstallerPath)\n }\n catch (error) {\n log.warn(\"packager.vm is used: \" + error.message)\n\n const vm = await packager.vm.value\n await vm.exec(installerPath, [])\n // Parallels VM can exit after command execution, but NSIS continue to be running\n let i = 0\n while (!(await exists(uninstallerPath)) && i++ < 100) {\n // noinspection JSUnusedLocalSymbols\n await new Promise((resolve, _reject) => setTimeout(resolve, 300))\n }\n }\n }\n else {\n await execWine(installerPath)\n }\n await packager.sign(uninstallerPath, \" Signing NSIS uninstaller\")\n\n delete defines.BUILD_UNINSTALLER\n // platform-specific path, not wine\n defines.UNINSTALLER_OUT_FILE = uninstallerPath\n return script\n }\n\n private computeVersionKey() {\n // Error: invalid VIProductVersion format, should be X.X.X.X\n // so, we must strip beta\n const localeId = this.options.language || \"1033\"\n const appInfo = this.packager.appInfo\n const versionKey = [\n `/LANG=${localeId} ProductName \"${appInfo.productName}\"`,\n `/LANG=${localeId} ProductVersion \"${appInfo.version}\"`,\n `/LANG=${localeId} LegalCopyright \"${appInfo.copyright}\"`,\n `/LANG=${localeId} FileDescription \"${appInfo.description}\"`,\n `/LANG=${localeId} FileVersion \"${appInfo.buildVersion}\"`,\n ]\n use(this.packager.platformSpecificBuildOptions.legalTrademarks, it => versionKey.push(`/LANG=${localeId} LegalTrademarks \"${it}\"`))\n use(appInfo.companyName, it => versionKey.push(`/LANG=${localeId} CompanyName \"${it}\"`))\n return versionKey\n }\n\n protected configureDefines(oneClick: boolean, defines: any): Promise<any> {\n const packager = this.packager\n const options = this.options\n\n const asyncTaskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n if (oneClick) {\n defines.ONE_CLICK = null\n\n if (options.runAfterFinish !== false) {\n defines.RUN_AFTER_FINISH = null\n }\n\n asyncTaskManager.add(async () => {\n const installerHeaderIcon = await packager.getResource(options.installerHeaderIcon, \"installerHeaderIcon.ico\")\n if (installerHeaderIcon != null) {\n defines.HEADER_ICO = installerHeaderIcon\n }\n })\n }\n else {\n if (options.runAfterFinish === false) {\n defines.HIDE_RUN_AFTER_FINISH = null\n }\n\n asyncTaskManager.add(async () => {\n const installerHeader = await packager.getResource(options.installerHeader, \"installerHeader.bmp\")\n if (installerHeader != null) {\n defines.MUI_HEADERIMAGE = null\n defines.MUI_HEADERIMAGE_RIGHT = null\n defines.MUI_HEADERIMAGE_BITMAP = installerHeader\n }\n })\n\n asyncTaskManager.add(async () => {\n const bitmap = (await packager.getResource(options.installerSidebar, \"installerSidebar.bmp\")) || \"${NSISDIR}\\\\Contrib\\\\Graphics\\\\Wizard\\\\nsis3-metro.bmp\"\n defines.MUI_WELCOMEFINISHPAGE_BITMAP = bitmap\n defines.MUI_UNWELCOMEFINISHPAGE_BITMAP = (await packager.getResource(options.uninstallerSidebar, \"uninstallerSidebar.bmp\")) || bitmap\n })\n\n if (options.allowElevation !== false) {\n defines.MULTIUSER_INSTALLMODE_ALLOW_ELEVATION = null\n }\n }\n\n if (options.perMachine === true) {\n defines.INSTALL_MODE_PER_ALL_USERS = null\n }\n\n if (!oneClick || options.perMachine === true) {\n defines.INSTALL_MODE_PER_ALL_USERS_REQUIRED = null\n }\n\n if (options.allowToChangeInstallationDirectory) {\n if (oneClick) {\n throw new InvalidConfigurationError(\"allowToChangeInstallationDirectory makes sense only for assisted installer (please set oneClick to false)\")\n }\n defines.allowToChangeInstallationDirectory = null\n }\n\n const commonOptions = getEffectiveOptions(options, packager)\n\n if (commonOptions.menuCategory != null) {\n defines.MENU_FILENAME = commonOptions.menuCategory\n }\n\n defines.SHORTCUT_NAME = commonOptions.shortcutName\n\n if (options.deleteAppDataOnUninstall) {\n defines.DELETE_APP_DATA_ON_UNINSTALL = null\n }\n\n asyncTaskManager.add(async () => {\n const uninstallerIcon = await packager.getResource(options.uninstallerIcon, \"uninstallerIcon.ico\")\n if (uninstallerIcon != null) {\n // we don't need to copy MUI_UNICON (defaults to app icon), so, we have 2 defines\n defines.UNINSTALLER_ICON = uninstallerIcon\n defines.MUI_UNICON = uninstallerIcon\n }\n })\n\n defines.UNINSTALL_DISPLAY_NAME = packager.expandMacro(options.uninstallDisplayName || \"${productName} ${version}\", null, {}, false)\n if (commonOptions.isCreateDesktopShortcut === DesktopShortcutCreationPolicy.NEVER) {\n defines.DO_NOT_CREATE_DESKTOP_SHORTCUT = null\n }\n if (commonOptions.isCreateDesktopShortcut === DesktopShortcutCreationPolicy.ALWAYS) {\n defines.RECREATE_DESKTOP_SHORTCUT = null\n }\n if (!commonOptions.isCreateStartMenuShortcut) {\n defines.DO_NOT_CREATE_START_MENU_SHORTCUT = null\n }\n\n if (options.displayLanguageSelector === true) {\n defines.DISPLAY_LANG_SELECTOR = null\n }\n\n return asyncTaskManager.awaitTasks()\n }\n\n private configureDefinesForAllTypeOfInstaller(defines: any) {\n const appInfo = this.packager.appInfo\n const companyName = appInfo.companyName\n if (companyName != null) {\n defines.COMPANY_NAME = companyName\n }\n\n // electron uses product file name as app data, define it as well to remove on uninstall\n if (defines.APP_FILENAME !== appInfo.productFilename) {\n defines.APP_PRODUCT_FILENAME = appInfo.productFilename\n }\n\n if (this.isWebInstaller) {\n defines.APP_PACKAGE_STORE_FILE = `${appInfo.updaterCacheDirName}\\\\${CURRENT_APP_PACKAGE_FILE_NAME}`\n }\n else {\n defines.APP_INSTALLER_STORE_FILE = `${appInfo.updaterCacheDirName}\\\\${CURRENT_APP_INSTALLER_FILE_NAME}`\n }\n\n if (!this.isWebInstaller && defines.APP_BUILD_DIR == null) {\n const options = this.options\n if (options.useZip) {\n defines.ZIP_COMPRESSION = null\n }\n\n defines.COMPRESSION_METHOD = options.useZip ? \"zip\" : \"7z\"\n }\n }\n\n private async executeMakensis(defines: any, commands: any, script: string) {\n const args: Array<string> = (this.options.warningsAsErrors === false) ? [] : [\"-WX\"]\n for (const name of Object.keys(defines)) {\n const value = defines[name]\n if (value == null) {\n args.push(`-D${name}`)\n }\n else {\n args.push(`-D${name}=${value}`)\n }\n }\n\n for (const name of Object.keys(commands)) {\n const value = commands[name]\n if (Array.isArray(value)) {\n for (const c of value) {\n args.push(`-X${name} ${c}`)\n }\n }\n else {\n args.push(`-X${name} ${value}`)\n }\n }\n\n args.push(\"-\")\n\n if (this.packager.debugLogger.isEnabled) {\n this.packager.debugLogger.add(\"nsis.script\", script)\n }\n\n const nsisPath = await NSIS_PATH.value\n const command = path.join(nsisPath, process.platform === \"darwin\" ? \"mac\" : (process.platform === \"win32\" ? \"Bin\" : \"linux\"), process.platform === \"win32\" ? \"makensis.exe\" : \"makensis\")\n await spawnAndWrite(command, args, script, {\n // we use NSIS_CONFIG_CONST_DATA_PATH=no to build makensis on Linux, but in any case it doesn't use stubs as MacOS/Windows version, so, we explicitly set NSISDIR\n env: {...process.env, NSISDIR: nsisPath},\n cwd: nsisTemplatesDir,\n })\n }\n\n private async computeCommonInstallerScriptHeader() {\n const packager = this.packager\n const options = this.options\n const scriptGenerator = new NsisScriptGenerator()\n const langConfigurator = new LangConfigurator(options)\n\n scriptGenerator.include(path.join(nsisTemplatesDir, \"include\", \"StdUtils.nsh\"))\n\n const includeDir = path.join(nsisTemplatesDir, \"include\")\n scriptGenerator.addIncludeDir(includeDir)\n scriptGenerator.flags([\"updated\", \"force-run\", \"keep-shortcuts\", \"no-desktop-shortcut\", \"delete-app-data\", \"allusers\", \"currentuser\"])\n\n createAddLangsMacro(scriptGenerator, langConfigurator)\n\n const taskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n const pluginArch = this.isUnicodeEnabled ? \"x86-unicode\" : \"x86-ansi\"\n taskManager.add(async () => {\n scriptGenerator.addPluginDir(pluginArch, path.join(await nsisResourcePathPromise.value, \"plugins\", pluginArch))\n })\n\n taskManager.add(async () => {\n const userPluginDir = path.join(packager.info.buildResourcesDir, pluginArch)\n const stat = await statOrNull(userPluginDir)\n if (stat != null && stat.isDirectory()) {\n scriptGenerator.addPluginDir(pluginArch, userPluginDir)\n }\n })\n\n taskManager.addTask(addCustomMessageFileInclude(\"messages.yml\", packager, scriptGenerator, langConfigurator))\n\n if (!this.isPortable) {\n if (options.oneClick === false) {\n taskManager.addTask(addCustomMessageFileInclude(\"assistedMessages.yml\", packager, scriptGenerator, langConfigurator))\n }\n\n taskManager.add(async () => {\n const customInclude = await packager.getResource(this.options.include, \"installer.nsh\")\n if (customInclude != null) {\n scriptGenerator.addIncludeDir(packager.info.buildResourcesDir)\n scriptGenerator.include(customInclude)\n }\n })\n }\n\n await taskManager.awaitTasks()\n return scriptGenerator.build()\n }\n\n private async computeFinalScript(originalScript: string, isInstaller: boolean) {\n const packager = this.packager\n const options = this.options\n const langConfigurator = new LangConfigurator(options)\n\n const scriptGenerator = new NsisScriptGenerator()\n const taskManager = new AsyncTaskManager(packager.info.cancellationToken)\n\n if (isInstaller) {\n // http://stackoverflow.com/questions/997456/nsis-license-file-based-on-language-selection\n taskManager.add(() => computeLicensePage(packager, options, scriptGenerator, langConfigurator.langs))\n }\n\n await taskManager.awaitTasks()\n\n if (this.isPortable) {\n return scriptGenerator.build() + originalScript\n }\n\n const preCompressedFileExtensions = this.getPreCompressedFileExtensions()\n if (preCompressedFileExtensions != null && preCompressedFileExtensions.length !== 0) {\n for (const [arch, dir] of this.archs.entries()) {\n await generateForPreCompressed(preCompressedFileExtensions, dir, arch, scriptGenerator)\n }\n }\n\n const fileAssociations = packager.fileAssociations\n if (fileAssociations.length !== 0) {\n\n scriptGenerator.include(path.join(path.join(nsisTemplatesDir, \"include\"), \"FileAssociation.nsh\"))\n if (isInstaller) {\n const registerFileAssociationsScript = new NsisScriptGenerator()\n for (const item of fileAssociations) {\n const extensions = asArray(item.ext).map(normalizeExt)\n for (const ext of extensions) {\n const customIcon = await packager.getResource(getPlatformIconFileName(item.icon, false), `${extensions[0]}.ico`)\n let installedIconPath = \"$appExe,0\"\n if (customIcon != null) {\n installedIconPath = `$INSTDIR\\\\resources\\\\${path.basename(customIcon)}`\n registerFileAssociationsScript.file(installedIconPath, customIcon)\n }\n\n const icon = `\"${installedIconPath}\"`\n const commandText = `\"Open with ${packager.appInfo.productName}\"`\n const command = '\"$appExe $\\\\\"%1$\\\\\"\"'\n registerFileAssociationsScript.insertMacro(\"APP_ASSOCIATE\", `\"${ext}\" \"${item.name || ext}\" \"${item.description || \"\"}\" ${icon} ${commandText} ${command}`)\n }\n }\n scriptGenerator.macro(\"registerFileAssociations\", registerFileAssociationsScript)\n }\n else {\n const unregisterFileAssociationsScript = new NsisScriptGenerator()\n for (const item of fileAssociations) {\n for (const ext of asArray(item.ext)) {\n unregisterFileAssociationsScript.insertMacro(\"APP_UNASSOCIATE\", `\"${normalizeExt(ext)}\" \"${item.name || ext}\"`)\n }\n }\n scriptGenerator.macro(\"unregisterFileAssociations\", unregisterFileAssociationsScript)\n }\n }\n\n return scriptGenerator.build() + originalScript\n }\n}\n\nasync function generateForPreCompressed(preCompressedFileExtensions: Array<string>, dir: string, arch: Arch, scriptGenerator: NsisScriptGenerator) {\n const resourcesDir = path.join(dir, \"resources\")\n const dirInfo = await statOrNull(resourcesDir)\n if (dirInfo == null || !dirInfo.isDirectory()) {\n return\n }\n\n const nodeModules = `${path.sep}node_modules`\n const preCompressedAssets = await walk(resourcesDir, (file, stat) => {\n if (stat.isDirectory()) {\n return !file.endsWith(nodeModules)\n }\n else {\n return preCompressedFileExtensions.some(it => file.endsWith(it))\n }\n })\n\n if (preCompressedAssets.length !== 0) {\n const macro = new NsisScriptGenerator()\n for (const file of preCompressedAssets) {\n macro.file(`$INSTDIR\\\\${path.relative(dir, file).replace(/\\//g, \"\\\\\")}`, file)\n }\n scriptGenerator.macro(`customFiles_${Arch[arch]}`, macro)\n }\n}\n\nasync function createPackageFileInfo(file: string): Promise<PackageFileInfo> {\n return {\n path: file,\n size: (await stat(file)).size,\n sha512: await hashFile(file),\n }\n}\n"],"sourceRoot":""}
@@ -4,8 +4,8 @@ import { AppPackageHelper } from "./nsisUtil";
4
4
  /** @private */
5
5
  export declare class WebInstallerTarget extends NsisTarget {
6
6
  constructor(packager: WinPackager, outDir: string, targetName: string, packageHelper: AppPackageHelper);
7
- readonly isWebInstaller: boolean;
7
+ get isWebInstaller(): boolean;
8
8
  protected configureDefines(oneClick: boolean, defines: any): Promise<any>;
9
- protected readonly installerFilenamePattern: string;
9
+ protected get installerFilenamePattern(): string;
10
10
  protected generateGitHubInstallerName(): string;
11
11
  }
@@ -61,7 +61,9 @@ function _nsisUtil() {
61
61
  return data;
62
62
  }
63
63
 
64
- 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; } }
64
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
65
+
66
+ 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; }
65
67
 
66
68
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
67
69
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/targets/nsis/nsisLang.ts"],"names":[],"mappings":"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","sourcesContent":["import { asArray } from \"builder-util\"\nimport { bundledLanguages, langIdToName, lcid, toLangWithRegion } from \"../../util/langs\"\nimport _debug from \"debug\"\nimport { outputFile, readFile } from \"fs-extra\"\nimport { safeLoad } from \"js-yaml\"\nimport * as path from \"path\"\nimport { PlatformPackager } from \"../../platformPackager\"\nimport { NsisOptions } from \"./nsisOptions\"\nimport { NsisScriptGenerator } from \"./nsisScriptGenerator\"\nimport { nsisTemplatesDir } from \"./nsisUtil\"\n\nconst debug = _debug(\"electron-builder:nsis\")\n\nexport class LangConfigurator {\n readonly isMultiLang: boolean\n readonly langs: Array<string>\n\n constructor(options: NsisOptions) {\n const rawList = options.installerLanguages\n\n if (options.unicode === false || rawList === null || (Array.isArray(rawList) && rawList.length === 0)) {\n this.isMultiLang = false\n }\n else {\n this.isMultiLang = options.multiLanguageInstaller !== false\n }\n\n if (this.isMultiLang) {\n this.langs = rawList == null ? bundledLanguages.slice() : asArray(rawList)\n .map(it => toLangWithRegion(it.replace(\"-\", \"_\")))\n }\n else {\n this.langs = [\"en_US\"]\n }\n }\n}\n\nexport function createAddLangsMacro(scriptGenerator: NsisScriptGenerator, langConfigurator: LangConfigurator) {\n const result: Array<string> = []\n for (const langWithRegion of langConfigurator.langs) {\n let name: string\n if (langWithRegion === \"zh_CN\") {\n name = \"SimpChinese\"\n }\n else if (langWithRegion === \"zh_TW\") {\n name = \"TradChinese\"\n }\n else if (langWithRegion === \"nb_NO\") {\n name = \"Norwegian\"\n }\n else if (langWithRegion === \"pt_BR\") {\n name = \"PortugueseBR\"\n }\n else {\n const lang = langWithRegion.substring(0, langWithRegion.indexOf(\"_\"))\n name = (langIdToName as any)[lang]\n if (name == null) {\n throw new Error(`Language name is unknown for ${lang}`)\n }\n\n if (name === \"Spanish\") {\n name = \"SpanishInternational\"\n }\n }\n result.push(`!insertmacro MUI_LANGUAGE \"${name}\"`)\n }\n\n scriptGenerator.macro(\"addLangs\", result)\n}\n\nasync function writeCustomLangFile(data: string, packager: PlatformPackager<any>) {\n const file = await packager.getTempFile(\"messages.nsh\")\n await outputFile(file, data)\n return file\n}\n\nexport async function addCustomMessageFileInclude(input: string, packager: PlatformPackager<any>, scriptGenerator: NsisScriptGenerator, langConfigurator: LangConfigurator) {\n const data = safeLoad(await readFile(path.join(nsisTemplatesDir, input), \"utf-8\"))\n const instructions = computeCustomMessageTranslations(data, langConfigurator).join(\"\\n\")\n debug(instructions)\n scriptGenerator.include(await writeCustomLangFile(instructions, packager))\n}\n\nfunction computeCustomMessageTranslations(messages: any, langConfigurator: LangConfigurator): Array<string> {\n const result: Array<string> = []\n const includedLangs = new Set(langConfigurator.langs)\n for (const messageId of Object.keys(messages)) {\n const langToTranslations = messages[messageId]\n const unspecifiedLangs = new Set(langConfigurator.langs)\n for (const lang of Object.keys(langToTranslations)) {\n const langWithRegion = toLangWithRegion(lang)\n\n if (!includedLangs.has(langWithRegion)) {\n continue\n }\n\n const value = langToTranslations[lang]\n if (value == null) {\n throw new Error(`${messageId} not specified for ${lang}`)\n }\n\n result.push(`LangString ${messageId} ${lcid[langWithRegion]} \"${value.replace(/\\n/g, \"$\\\\r$\\\\n\")}\"`)\n unspecifiedLangs.delete(langWithRegion)\n }\n\n if (langConfigurator.isMultiLang) {\n const defaultTranslation = langToTranslations.en.replace(/\\n/g, \"$\\\\r$\\\\n\")\n for (const langWithRegion of unspecifiedLangs) {\n result.push(`LangString ${messageId} ${lcid[langWithRegion]} \"${defaultTranslation}\"`)\n }\n }\n }\n return result\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../../src/targets/nsis/nsisLang.ts"],"names":[],"mappings":"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","sourcesContent":["import { asArray } from \"builder-util\"\nimport { bundledLanguages, langIdToName, lcid, toLangWithRegion } from \"../../util/langs\"\nimport _debug from \"debug\"\nimport { outputFile, readFile } from \"fs-extra\"\nimport { safeLoad } from \"js-yaml\"\nimport * as path from \"path\"\nimport { PlatformPackager } from \"../../platformPackager\"\nimport { NsisOptions } from \"./nsisOptions\"\nimport { NsisScriptGenerator } from \"./nsisScriptGenerator\"\nimport { nsisTemplatesDir } from \"./nsisUtil\"\n\nconst debug = _debug(\"electron-builder:nsis\")\n\nexport class LangConfigurator {\n readonly isMultiLang: boolean\n readonly langs: Array<string>\n\n constructor(options: NsisOptions) {\n const rawList = options.installerLanguages\n\n if (options.unicode === false || rawList === null || (Array.isArray(rawList) && rawList.length === 0)) {\n this.isMultiLang = false\n }\n else {\n this.isMultiLang = options.multiLanguageInstaller !== false\n }\n\n if (this.isMultiLang) {\n this.langs = rawList == null ? bundledLanguages.slice() : asArray(rawList)\n .map(it => toLangWithRegion(it.replace(\"-\", \"_\")))\n }\n else {\n this.langs = [\"en_US\"]\n }\n }\n}\n\nexport function createAddLangsMacro(scriptGenerator: NsisScriptGenerator, langConfigurator: LangConfigurator) {\n const result: Array<string> = []\n for (const langWithRegion of langConfigurator.langs) {\n let name: string\n if (langWithRegion === \"zh_CN\") {\n name = \"SimpChinese\"\n }\n else if (langWithRegion === \"zh_TW\") {\n name = \"TradChinese\"\n }\n else if (langWithRegion === \"nb_NO\") {\n name = \"Norwegian\"\n }\n else if (langWithRegion === \"pt_BR\") {\n name = \"PortugueseBR\"\n }\n else {\n const lang = langWithRegion.substring(0, langWithRegion.indexOf(\"_\"))\n name = (langIdToName as any)[lang]\n if (name == null) {\n throw new Error(`Language name is unknown for ${lang}`)\n }\n\n if (name === \"Spanish\") {\n name = \"SpanishInternational\"\n }\n }\n result.push(`!insertmacro MUI_LANGUAGE \"${name}\"`)\n }\n\n scriptGenerator.macro(\"addLangs\", result)\n}\n\nasync function writeCustomLangFile(data: string, packager: PlatformPackager<any>) {\n const file = await packager.getTempFile(\"messages.nsh\")\n await outputFile(file, data)\n return file\n}\n\nexport async function addCustomMessageFileInclude(input: string, packager: PlatformPackager<any>, scriptGenerator: NsisScriptGenerator, langConfigurator: LangConfigurator) {\n const data = safeLoad(await readFile(path.join(nsisTemplatesDir, input), \"utf-8\"))\n const instructions = computeCustomMessageTranslations(data, langConfigurator).join(\"\\n\")\n debug(instructions)\n scriptGenerator.include(await writeCustomLangFile(instructions, packager))\n}\n\nfunction computeCustomMessageTranslations(messages: any, langConfigurator: LangConfigurator): Array<string> {\n const result: Array<string> = []\n const includedLangs = new Set(langConfigurator.langs)\n for (const messageId of Object.keys(messages)) {\n const langToTranslations = messages[messageId]\n const unspecifiedLangs = new Set(langConfigurator.langs)\n for (const lang of Object.keys(langToTranslations)) {\n const langWithRegion = toLangWithRegion(lang)\n\n if (!includedLangs.has(langWithRegion)) {\n continue\n }\n\n const value = langToTranslations[lang]\n if (value == null) {\n throw new Error(`${messageId} not specified for ${lang}`)\n }\n\n result.push(`LangString ${messageId} ${lcid[langWithRegion]} \"${value.replace(/\\n/g, \"$\\\\r$\\\\n\")}\"`)\n unspecifiedLangs.delete(langWithRegion)\n }\n\n if (langConfigurator.isMultiLang) {\n const defaultTranslation = langToTranslations.en.replace(/\\n/g, \"$\\\\r$\\\\n\")\n for (const langWithRegion of unspecifiedLangs) {\n result.push(`LangString ${messageId} ${lcid[langWithRegion]} \"${defaultTranslation}\"`)\n }\n }\n }\n return result\n}"],"sourceRoot":""}
@@ -37,7 +37,9 @@ function _nsisUtil() {
37
37
  return data;
38
38
  }
39
39
 
40
- 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; } }
40
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
41
+
42
+ 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; }
41
43
 
42
44
  async function computeLicensePage(packager, options, scriptGenerator, languages) {
43
45
  const license = await (0, _license().getNotLocalizedLicenseFile)(options.license, packager);