Quellcode durchsuchen

Adding 32bit support

Andrew Chalkley vor 8 Jahren
Ursprung
Commit
e067536dd5
5 geänderte Dateien mit 97 neuen und 3 gelöschten Zeilen
  1. 3 0
      .gitignore
  2. 9 3
      package.json
  3. 23 0
      scripts/sign-installer-windows-32.js
  4. 21 0
      scripts/sign-windows-32.js
  5. 41 0
      scripts/windows-installer-32.js

+ 3 - 0
.gitignore

@@ -39,5 +39,8 @@ typings
 # Webstorm/JetBrains
 .idea
 
+# VS Code
+.vscode
+
 windows.p12
 sign.bat

+ 9 - 3
package.json

@@ -8,20 +8,26 @@
     "test": "mocha",
     "pre-rebuild": "node ./scripts/pre-rebuild.js",
     "rebuild": "cd node_modules/serialport && node-gyp rebuild --target=1.2.5 --arch=x64 --dist-url=https://atom.io/download/atom-shell",
-   
+    "rebuild-32": "cd node_modules/serialport && node-gyp rebuild --target=1.2.5 --arch=ia32 --dist-url=https://atom.io/download/atom-shell",
+
     "pack-windows": "electron-packager . --asar --asar-unpack=protocol-link.html --overwrite --platform=win32 --arch=x64 --icon=resources/icon.ico --prune=true --out=out --version-string.CompanyName=ThingsSDK --version-string.FileDescription=Flasher.js --version-string.ProductName=Flasher.js",
+    "pack-windows-32": "electron-packager . --asar --asar-unpack=protocol-link.html --overwrite --platform=win32 --arch=ia32 --icon=resources/icon.ico --prune=true --out=out --version-string.CompanyName=ThingsSDK --version-string.FileDescription=Flasher.js --version-string.ProductName=Flasher.js",
     "pack-mac": "electron-packager . Flasher.js --asar --asar-unpack=protocol-link.html --overwrite --platform=darwin --arch=x64 --icon=resources/icon.icns --prune=true --out=out --osx-sign.identity='Developer ID Application: Secret Monkey Science'",
     "pack-linux": "electron-packager . --asar --asar-unpack=protocol-link.html --overwrite --platform=linux --arch=x64 --icon=resources/png/icon64.png --prune=true --out=out",
   
     "sign-mac": "electron-osx-sign out/Flasher.js-darwin-x64/Flasher.js.app",
     "sign-windows": "node ./scripts/sign-windows.js",
+    "sign-windows-32": "node ./scripts/sign-windows-32.js",
     "sign-installer-windows": "node ./scripts/sign-installer-windows.js",
+    "sign-installer-windows-32": "node ./scripts/sign-installer-windows-32.js",
 
     "installer-windows": "node ./scripts/windows-installer.js",
+    "installer-windows-32": "node ./scripts/windows-installer-32.js",
     "installer-mac": "electron-installer-dmg --overwrite --out=out/ out/Flasher.js-darwin-x64/Flasher.js.app Flasher.js --icon=resources/icon.icns --background=resources/drag_to_install.png",
     "installer-linux": "electron-installer-debian --src out/flasher.js-linux-x64/ --arch amd64 --config linux-config.json",
   
-    "dist-windows": "npm run pre-rebuild && npm run rebuild && npm run pack-windows && npm run sign-windows && npm run installer-windows && npm run sign-installer-windows",
+    "dist-windows": "npm run pre-rebuild && npm run rebuild && npm run pack-windows && npm run sign-windows && npm run installer-windows && npm run sign-installer-windows",    
+    "dist-windows-32": "npm run pre-rebuild && npm run rebuild-32 && npm run pack-windows-32 && npm run sign-windows-32 && npm run installer-windows-32 && npm run sign-installer-windows-32",
     "dist-linux": "npm run pre-rebuild && npm run rebuild && npm run pack-linux && npm run installer-linux",
     "dist-mac": "npm run pre-rebuild && npm run rebuild && npm run pack-mac && npm run sign-mac && npm run installer-mac"
   },
@@ -61,7 +67,7 @@
   "devDependencies": {
     "chai": "^3.5.0",
     "electron-packager": "^7.1.0",
-    "electron-prebuilt": "^1.2.5",
+    "electron-prebuilt": "1.2.5",
     "electron-winstaller": "^2.3.1",
     "mocha": "^2.5.3"
   }

+ 23 - 0
scripts/sign-installer-windows-32.js

@@ -0,0 +1,23 @@
+"use strict";
+
+const fs = require("fs");
+const path = require('path');
+
+const rootPath = path.join(__dirname, '..');
+const outPath = path.join(rootPath, 'out');
+const packedPath = path.join(outPath, 'installers');
+const exec = require('child_process').execSync;
+
+fs.readdir(packedPath, (err, files) => {
+    const dllsAndExes = files.filter(file => {
+        return file.endsWith(".dll") || file.endsWith(".exe");
+    });
+    
+    dllsAndExes.forEach(run);
+});
+
+
+function run(file) {
+    exec(`signtool.exe sign /a /d "Flasher.js" /du https://github.com/ThingsSDK/flasher.js /s MY /n "Andrew Chalkley" /fd sha1 /t http://timestamp.verisign.com/scripts/timstamp.dll /v "${path.join(packedPath, file)}"`);
+    exec(`signtool.exe sign /a /d "Flasher.js" /du https://github.com/ThingsSDK/flasher.js /s MY /n "Andrew Chalkley" /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td sha256 /as /v "${path.join(packedPath, file)}"`);
+}

+ 21 - 0
scripts/sign-windows-32.js

@@ -0,0 +1,21 @@
+"use strict";
+const fs = require("fs");
+const path = require('path');
+
+const rootPath = path.join(__dirname, '..');
+const outPath = path.join(rootPath, 'out');
+const packedPath = path.join(outPath, 'flasher.js-win32-ia32');
+const exec = require('child_process').execSync;
+
+fs.readdir(packedPath, (err, files) => {
+    const dllsAndExes = files.filter(file => {
+        return file.endsWith(".dll") || file.endsWith(".exe");
+    });
+    dllsAndExes.forEach(run);
+});
+
+
+function run(file) {
+    exec(`signtool.exe sign /a /d "Flasher.js" /du https://github.com/ThingsSDK/flasher.js /s MY /n "Andrew Chalkley" /fd sha1 /t http://timestamp.verisign.com/scripts/timstamp.dll /v "${path.join(packedPath, file)}"`);
+    exec(`signtool.exe sign /a /d "Flasher.js" /du https://github.com/ThingsSDK/flasher.js /s MY /n "Andrew Chalkley" /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td sha256 /as /v "${path.join(packedPath, file)}"`);
+}

+ 41 - 0
scripts/windows-installer-32.js

@@ -0,0 +1,41 @@
+
+"use strict";
+//Taken from Electron API Demos
+//https://github.com/electron/electron-api-demos/blob/master/script/installer.js
+
+const createWindowsInstaller = require('electron-winstaller').createWindowsInstaller;
+const path = require('path');
+const rimraf = require('rimraf');
+
+deleteOutputFolder()
+  .then(getInstallerConfig)
+  .then(createWindowsInstaller)
+  .catch((error) => {
+    console.error(error.message || error);
+    process.exit(1);
+  });
+
+function getInstallerConfig() {
+  const rootPath = path.join(__dirname, '..');
+  const outPath = path.join(rootPath, 'out');
+
+  return Promise.resolve({
+    appDirectory: path.join(outPath, 'flasher.js-win32-ia32'),
+    iconUrl: 'https://raw.githubusercontent.com/thingssdk/flasher.js/resources/icon.ico', 
+    loadingGif: path.join(rootPath, 'resources', 'loading.gif'),
+    noMsi: true,
+    outputDirectory: path.join(outPath, 'installers'),
+    setupExe: 'flasher.js-setup.exe',
+    setupIcon: path.join(rootPath, 'resources', 'icon.ico'),
+    skipUpdateIcon: true
+  });
+}
+
+function deleteOutputFolder() {
+  return new Promise((resolve, reject) => {
+    rimraf(path.join(__dirname, '..', 'out', 'installers'), error => {
+      if (error) reject(error);
+      else resolve();
+    });
+  });
+}