Browse Source

Working on signed build

JoshEngebretson 10 years ago
parent
commit
c5f2d4d0ca
3 changed files with 83 additions and 18 deletions
  1. 1 0
      Build/Windows/CreateInstaller.bat
  2. 10 2
      Build/Windows/Installer/AtomicEditor.nsi
  3. 72 16
      Jakefile

+ 1 - 0
Build/Windows/CreateInstaller.bat

@@ -0,0 +1 @@
+"C:\Program Files (x86)\NSIS\makensis.exe" %1=%2 %3=%4 %5

+ 10 - 2
Build/Windows/Installer/AtomicEditor.nsi

@@ -2,9 +2,17 @@
 ;Atomic Editor NSIS Installation Script
 ;--------------------------------
 
+!ifndef ATOMIC_ROOT
+!error "ATOMIC_ROOT NOT DEFINED"
+!endif
+
+!ifndef EDITOR_VERSION
+!error "EDITOR_VERSION NOT DEFINED"
+!endif
+
 !define prodname "Atomic Editor"
 !define coname "THUNDERBEAST GAMES LLC"
-!define outfile "C:\Dev\atomic\AtomicGameEngine\Artifacts\Windows_Installer\AtomicEditorSetup.exe"
+!define outfile "${ATOMIC_ROOT}\Artifacts\Windows_Installer\AtomicEditorSetup.exe"
 !define appexe "AtomicEditor.exe"
 !define produrl "http://www.atomicgameengine.com/"
 
@@ -60,7 +68,7 @@ Section "${prodname}" SecMain
 
 	SetOutPath "$INSTDIR"
 
-  File /r "C:\Dev\atomic\AtomicGameEngine\Artifacts\Windows_Package\*.*"
+  File /r "${ATOMIC_ROOT}\Artifacts\Dist\AtomicEditorInstallerSourceFiles\Windows_Package\*.*"
 
 	;Store installation folder
 	WriteRegStr HKLM "Software\${coname}\InstallDir" "${prodname}" $INSTDIR

+ 72 - 16
Jakefile

@@ -8,8 +8,11 @@ var os = require('os');
 
 var host = os.platform();
 var jakeRoot = __dirname;
-var jenkinsBuild = process.env.ATOMIC_JENKINS_BUILD == 1
+var jenkinsBuild = process.env.ATOMIC_JENKINS_BUILD == 1;
 var generateJSDoc = true;
+var buildSHA = process.env.ATOMIC_BUILD_SHA;
+
+console.log("ATOMIC BUILD SHA is", buildSHA);
 
 var artifactsFolder = jakeRoot + "/Artifacts";
 
@@ -146,25 +149,25 @@ namespace('build', function() {
         printStdout: true
       });
 
-  } else {
+    } else {
 
-    if (!fs.existsSync(windowsBuildFolder)) {
-      jake.mkdirP(windowsBuildFolder);
-    }
+      if (!fs.existsSync(windowsBuildFolder)) {
+        jake.mkdirP(windowsBuildFolder);
+      }
 
-    process.chdir(windowsBuildFolder);
+      process.chdir(windowsBuildFolder);
 
-    jake.exec(jakeRoot + "/Build/Windows/CompileAtomicTool.bat", function() {
+      jake.exec(jakeRoot + "/Build/Windows/CompileAtomicTool.bat", function() {
 
-      fs.copySync(atomicToolBinary, platformBinariesFolder + "/Win32/" + path.basename(atomicToolBinary));
-      console.log("Built Windows AtomicTool");
-      complete();
+        fs.copySync(atomicToolBinary, platformBinariesFolder + "/Win32/" + path.basename(atomicToolBinary));
+        console.log("Built Windows AtomicTool");
+        complete();
 
-    }, {
-      printStdout: true
-    });
+      }, {
+        printStdout: true
+      });
 
-  }
+    }
 
   }); // end build:atomictool
 
@@ -498,7 +501,7 @@ namespace('package', function() {
 
   });
 
-  task('windows', ['clean:all','build:windows'], function() {
+  task('windows', ['clean:all', 'build:windows'], function() {
 
     if (!fs.existsSync(distFolder)) {
       jake.mkdirP(distFolder);
@@ -530,7 +533,17 @@ namespace('package', function() {
 
     if (jenkinsBuild) {
 
-      cmds = [jakeRoot + "/Build/Windows/7z/7z.exe a -tzip " + distFolder + "/AtomicEditor_Windows.zip " + windowsPackageFolder]
+      var pfxFile = process.env.ATOMIC_PFX_FILE;
+      var pfxPW = process.env.ATOMIC_PFX_PW;
+
+      var signCmd = "signtool.exe sign /f " + pfxFile;
+      signCmd += " /p " + pfxPW;
+      signCmd += " /t http://timestamp.verisign.com/scripts/timestamp.dll";
+      signCmd += " /v " + windowsPackageFolder + "/AtomicEditor.exe";
+
+      var zipCmd = jakeRoot + "/Build/Windows/7z/7z.exe a -tzip " + distFolder + "/AtomicEditor_Windows.zip " + windowsPackageFolder;
+
+      cmds = [signCmd, zipCmd];
 
       jake.exec(cmds, function() {});
 
@@ -538,6 +551,49 @@ namespace('package', function() {
 
   });
 
+  task('create_windows_installer', [], function() {
+
+    console.log("Unpacking Windows Editor");
+
+    var installerSourceFolder = distFolder + "/AtomicEditorInstallerSourceFiles";
+
+    if (!fs.existsSync(installerSourceFolder)) {
+      jake.mkdirP(installerSourceFolder);
+    }
+
+    process.chdir(installerSourceFolder);
+
+    var zipCmd = jakeRoot + "/Build/Windows/7z/7z.exe x " + jakeRoot + "/Artifacts/Windows_Package.zip"
+
+    var cmds = [zipCmd];
+
+    jake.exec(cmds, function() {
+
+      var nsisDefines = "/DATOMIC_ROOT=" + jakeRoot;
+      nsisDefines += " /DEDITOR_VERSION=1";
+
+      var makeNSISCmd = jakeRoot + "\\Build\\Windows\\CreateInstaller.bat";
+
+      makeNSISCmd += " " + nsisDefines + " " + jakeRoot + "/Build/Windows/Installer/AtomicEditor.nsi";
+
+      var pfxFile = process.env.ATOMIC_PFX_FILE;
+      var pfxPW = process.env.ATOMIC_PFX_PW;
+
+      var signCmd = "signtool.exe sign /f " + pfxFile;
+      signCmd += " /p " + pfxPW;
+      signCmd += " /t http://timestamp.verisign.com/scripts/timestamp.dll";
+      signCmd += " /v " + jakeRoot + "/Artifacts/Windows_Installer/AtomicEditorSetup.exe";
+
+      var cmds = [makeNSISCmd, signCmd];
+
+      console.log("Creating Windows Installer");
+
+      jake.exec(cmds, function() {});
+
+    });
+
+  });
+
   // We have the windows and mac editors builds, now we need to merge them
   task('merge_editor_data', [], function() {