Skip to content

Commit e2bc6c8

Browse files
committed
build: adding script to create Windows Store build
1 parent b62adca commit e2bc6c8

File tree

4 files changed

+284
-0
lines changed

4 files changed

+284
-0
lines changed

package-lock.json

Lines changed: 205 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
"electron": "^8.0.1",
6666
"electron-builder": "^22.2.0",
6767
"electron-mocha": "^8.2.1",
68+
"electron-windows-store": "^2.1.0",
6869
"eslint-config-google": "^0.14.0",
6970
"esm": "^3.2.25",
7071
"express": "^4.17.1",

tasks/build-win-store-package.js

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
const convertToWindowsStore = require('electron-windows-store');
2+
const ebuilder = require('electron-builder');
3+
const path = require('path');
4+
const fs = require('fs-extra');
5+
6+
/**
7+
* A script that performs Windows build and signing then it converts
8+
* the build into APPX package that can be ditributed in Windows store.
9+
*
10+
* The build script assumes the following variables are set:
11+
* - CSC_NAME
12+
* - CSC_LINK
13+
* - WIN_CSC_LINK
14+
* - CSC_KEY_PASSWORD
15+
* - WIN_CSC_KEY_PASSWORD
16+
*/
17+
class WindowsStoreBuild {
18+
async getConverterOpts() {
19+
const version = await this.getVersion();
20+
return {
21+
inputDirectory: path.join(__dirname, '..', 'dist', 'win-unpacked'),
22+
outputDirectory: path.join(__dirname, '..', 'dist', 'win-store'),
23+
packageVersion: version,
24+
packageName: 'AdvancedRestClient',
25+
packageDisplayName: 'Advanced REST Client',
26+
packageDescription: 'The Advanced REST Client desktop application.',
27+
assets: path.join(__dirname, '..', 'build', 'appx'),
28+
deploy: false,
29+
publisher: 'CN=D213CA20-88CE-42AC-A9F2-C5D41BF04550',
30+
publisherDisplayName: 'Pawel Psztyc',
31+
identityName: '48695PawelPsztyc.advanced-rest-client',
32+
};
33+
}
34+
35+
async getVersion() {
36+
const file = path.join(__dirname, '..', 'package.json');
37+
const pkg = await fs.readJson(file);
38+
return `${pkg.version}.0`;
39+
}
40+
41+
async getWinConfig() {
42+
const file = path.join(__dirname, '..', 'package.json');
43+
const pkg = await fs.readJson(file);
44+
return pkg.build;
45+
}
46+
47+
async buildWindows() {
48+
const config = await this.getWinConfig();
49+
const Platform = ebuilder.Platform;
50+
const opts = {
51+
targets: Platform.WINDOWS.createTarget('nsis'),
52+
config,
53+
};
54+
return await ebuilder.build(opts);
55+
}
56+
57+
async convert() {
58+
const options = await this.getConverterOpts();
59+
await convertToWindowsStore(options);
60+
}
61+
62+
async build() {
63+
await this.buildWindows();
64+
await this.convert();
65+
}
66+
}
67+
68+
new WindowsStoreBuild().build();

tasks/win-store-build.cmd

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
set CSC_NAME=Pawel Psztyc
2+
set CSC_LINK=advancedrestclient.pfx
3+
set WIN_CSC_LINK=advancedrestclient.pfx
4+
5+
: The password is set in the profile's variables
6+
7+
./node_modules/.bin/electron-builder -w
8+
electron-windows-store --input-directory dist\win-unpacked --output-directory dist\arc-win --package-version 15.0.1.0 --package-name AdvancedRestClient --publisher-display-name 'Pawel Psztyc' --publisher 'CN=D213CA20-88CE-42AC-A9F2-C5D41BF04550' --assets 'build\appx' --identity-name '48695PawelPsztyc.advanced-rest-client'
9+
10+
: Publish to https://partner.microsoft.com/en-us/dashboard/products/9NMQQT55RBRC/submissions/

0 commit comments

Comments
 (0)