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