♻️ Some installer changes

This commit is contained in:
Florian Metz
2019-10-13 19:10:00 +02:00
parent b2465f9bdc
commit cdba36628f
8 changed files with 72 additions and 261 deletions

4
.github/deploy.ts vendored
View File

@@ -1,7 +1,7 @@
import * as Client from "ssh2-sftp-client";
import * as archiver from "archiver";
import { platform, arch } from "os";
import { createWriteStream } from "fs";
import { createWriteStream, readdirSync } from "fs";
let sftp = new Client();
@@ -16,6 +16,8 @@ sftp
let output = createWriteStream("app.zip"),
archive = archiver("zip");
console.log(readdirSync(`../dist/`));
archive.directory(
`../dist/PreMiD-${platform()}-${arch()}`,
`PreMiD-${platform()}-${arch()}`

View File

@@ -1,236 +0,0 @@
<project>
<shortName>PreMiD</shortName>
<fullName>PreMiD</fullName>
<version>2.0</version>
<installerFilename>${product_fullname}-${product_version}-installer_32bit.${platform_exec_suffix}</installerFilename>
<wrapLicenseFileText>0</wrapLicenseFileText>
<logoImage>appIcon.png</logoImage>
<componentList>
<component>
<name>default</name>
<description>Default Component</description>
<canBeEdited>1</canBeEdited>
<selected>1</selected>
<show>1</show>
<folderList>
<folder>
<description>Program Files</description>
<destination>${installdir}</destination>
<name>programfiles</name>
<platforms>all</platforms>
<distributionFileList>
<distributionFile>
<origin>../tmp/update.ini</origin>
</distributionFile>
</distributionFileList>
</folder>
<folder>
<description>Program Files</description>
<destination>${installdir}</destination>
<name>programfileslinux</name>
<platforms>linux</platforms>
</folder>
<folder>
<description>Program Files</description>
<destination>${installdir}</destination>
<name>programfileswindows</name>
<platforms>windows</platforms>
<distributionFileList>
<distributionDirectory allowWildcards="1">
<origin>../dist/PreMiD-win32-ia32/*</origin>
</distributionDirectory>
<distributionFile>
<origin>appIcon.ico</origin>
</distributionFile>
<distributionFile>
<origin>updater.exe</origin>
</distributionFile>
</distributionFileList>
</folder>
<folder>
<description>Program Files</description>
<destination>${installdir}</destination>
<name>programfilesosx</name>
<platforms>osx</platforms>
<distributionFileList>
<distributionFile>
<origin>updater.app</origin>
</distributionFile>
<distributionFile>
<origin>../dist/PreMiD-darwin-x64/PreMiD.app</origin>
</distributionFile>
</distributionFileList>
</folder>
</folderList>
<startMenuShortcutList>
<startMenuShortcut>
<comment></comment>
<name>${product_fullname}</name>
<runAsAdmin>0</runAsAdmin>
<runInTerminal>0</runInTerminal>
<windowsExec>${installdir}/PreMID.exe</windowsExec>
<windowsExecArgs></windowsExecArgs>
<windowsIcon></windowsIcon>
<windowsPath>${installdir}/</windowsPath>
</startMenuShortcut>
</startMenuShortcutList>
</component>
</componentList>
<preInstallationActionList>
<kill>
<abortOnError>0</abortOnError>
<name>${product_fullname}.exe</name>
<progressText>Killing ${product_fullname}</progressText>
<showMessageOnError>0</showMessageOnError>
<ruleList>
<platformTest>
<type>windows</type>
</platformTest>
</ruleList>
</kill>
<runProgram>
<program>pkill</program>
<programArguments>PreMiD</programArguments>
<runAs>${env(USER)}</runAs>
<useMSDOSPath>0</useMSDOSPath>
<workingDirectory>${installdir}/</workingDirectory>
<ruleList>
<platformTest>
<type>osx</type>
</platformTest>
<processTest>
<logic>is_running</logic>
<name>PreMiD</name>
</processTest>
</ruleList>
</runProgram>
<runProgram>
<program>${windows_folder_local_appdata}\premid\Update.exe</program>
<programArguments>--uninstall</programArguments>
<onErrorActionList>
<deleteFile>
<matchHiddenFiles>1</matchHiddenFiles>
<path>${windows_folder_local_appdata}\premid</path>
</deleteFile>
</onErrorActionList>
<ruleList>
<platformTest>
<type>windows</type>
</platformTest>
<fileExists>
<path>${windows_folder_local_appdata}\premid\PreMiD.exe</path>
</fileExists>
</ruleList>
</runProgram>
</preInstallationActionList>
<postInstallationActionList>
<runProgram>
<abortOnError>0</abortOnError>
<program>PreMID.exe</program>
<programArguments>&amp;</programArguments>
<progressText>Launching PreMiD</progressText>
<show>0</show>
<showMessageOnError>0</showMessageOnError>
<workingDirectory>${installdir}</workingDirectory>
<ruleList>
<platformTest>
<type>windows</type>
</platformTest>
</ruleList>
</runProgram>
<setInstallerVariableFromRegEx show="0">
<name>escaped_installdir</name>
<pattern> </pattern>
<substitution>\\ </substitution>
<text>${installdir}</text>
</setInstallerVariableFromRegEx>
<runProgram>
<program>open</program>
<programArguments> ${escaped_installdir}/PreMiD.app</programArguments>
<progressText>Launching PreMiD</progressText>
<runAs>${env(USER)}</runAs>
<useMSDOSPath>0</useMSDOSPath>
<workingDirectory>${installdir}/</workingDirectory>
<ruleList>
<platformTest>
<type>osx</type>
</platformTest>
</ruleList>
</runProgram>
<deleteFile>
<path>${installdir}/update</path>
</deleteFile>
<addDirectoriesToUninstaller>
<addContents>1</addContents>
<files>${installdir}</files>
</addDirectoriesToUninstaller>
<deleteFile>
<path>${windows_folder_local_appdata}\premid</path>
<ruleList>
<platformTest>
<type>windows</type>
</platformTest>
</ruleList>
</deleteFile>
</postInstallationActionList>
<preUninstallationActionList>
<kill>
<abortOnError>0</abortOnError>
<name>${product_fullname}.exe</name>
<progressText>Killing ${product_fullname}</progressText>
<showMessageOnError>0</showMessageOnError>
<ruleList>
<platformTest>
<type>windows</type>
</platformTest>
</ruleList>
</kill>
<runProgram>
<program>pkill</program>
<programArguments>PreMiD</programArguments>
<runAs>${env(USER)}</runAs>
<useMSDOSPath>0</useMSDOSPath>
<workingDirectory>${installdir}/</workingDirectory>
<ruleList>
<platformTest>
<type>osx</type>
</platformTest>
<processTest>
<logic>is_running</logic>
<name>PreMiD</name>
</processTest>
</ruleList>
</runProgram>
<deleteFile>
<path>${installdir}/update/</path>
</deleteFile>
<deleteFile>
<matchHiddenFiles>1</matchHiddenFiles>
<path>${windows_folder_appdata}/${product_fullname}</path>
</deleteFile>
</preUninstallationActionList>
<defaultInstallationMode>unattended</defaultInstallationMode>
<enableRollback>0</enableRollback>
<enableTimestamp>1</enableTimestamp>
<osxPlatforms>osx-intel osx-x86_64</osxPlatforms>
<outputDirectory>../dist/installer</outputDirectory>
<productDisplayIcon>${installdir}/appIcon.ico</productDisplayIcon>
<saveRelativePaths>1</saveRelativePaths>
<unattendedModeUI>minimal</unattendedModeUI>
<vendor>Timeraa</vendor>
<windowsExecutableIcon>appIcon.ico</windowsExecutableIcon>
<parameterList>
<directoryParameter>
<name>installdir</name>
<description>Installer.Parameter.installdir.description</description>
<explanation>Installer.Parameter.installdir.explanation</explanation>
<value></value>
<default>${platform_install_prefix}/${product_shortname}</default>
<allowEmptyValue>0</allowEmptyValue>
<cliOptionName>prefix</cliOptionName>
<mustBeWritable>1</mustBeWritable>
<mustExist>0</mustExist>
<width>40</width>
</directoryParameter>
</parameterList>
</project>

View File

@@ -1,10 +1,11 @@
<project>
<shortName>PreMiD</shortName>
<fullName>PreMiD</fullName>
<version>2.0</version>
<version>{{VERSION}}</version>
<installerFilename>${product_fullname}-${product_version}-installer_64bit.${platform_exec_suffix}</installerFilename>
<wrapLicenseFileText>0</wrapLicenseFileText>
<logoImage>appIcon.png</logoImage>
<logoImage>../installer_assets/appIcon.png</logoImage>
<osxApplicationBundleIcon>../installer_assets/appIcon.icns</osxApplicationBundleIcon>
<componentList>
<component>
<name>default</name>
@@ -20,7 +21,7 @@
<platforms>all</platforms>
<distributionFileList>
<distributionFile>
<origin>../tmp/update.ini</origin>
<origin>update.ini</origin>
</distributionFile>
</distributionFileList>
</folder>
@@ -37,13 +38,13 @@
<platforms>windows</platforms>
<distributionFileList>
<distributionDirectory allowWildcards="1">
<origin>../dist/PreMiD-win32-x64/*</origin>
<origin>../dist/PACKAGEDNAME/*</origin>
</distributionDirectory>
<distributionFile>
<origin>appIcon.ico</origin>
<origin>../installer_assets/appIcon.ico</origin>
</distributionFile>
<distributionFile>
<origin>updater.exe</origin>
<origin>../installer_assets/updater.exe</origin>
</distributionFile>
</distributionFileList>
</folder>
@@ -54,10 +55,10 @@
<platforms>osx</platforms>
<distributionFileList>
<distributionFile>
<origin>updater.app</origin>
<origin>../installer_assets/updater.app</origin>
</distributionFile>
<distributionFile>
<origin>../dist/PreMiD-darwin-x64/PreMiD.app</origin>
<origin>../dist/PACKAGEDNAME/PreMiD.app</origin>
</distributionFile>
</distributionFileList>
</folder>
@@ -68,7 +69,7 @@
<name>${product_fullname}</name>
<runAsAdmin>0</runAsAdmin>
<runInTerminal>0</runInTerminal>
<windowsExec>${installdir}/PreMID.exe</windowsExec>
<windowsExec>${installdir}/PreMiD.exe</windowsExec>
<windowsExecArgs></windowsExecArgs>
<windowsIcon></windowsIcon>
<windowsPath>${installdir}/</windowsPath>
@@ -122,11 +123,29 @@
</fileExists>
</ruleList>
</runProgram>
<runProgram>
<program>${windows_folder_common_appdata}\${system_username}\premid\Update.exe</program>
<programArguments>--uninstall</programArguments>
<onErrorActionList>
<deleteFile>
<matchHiddenFiles>1</matchHiddenFiles>
<path>${windows_folder_common_appdata}\${system_username}\premid</path>
</deleteFile>
</onErrorActionList>
<ruleList>
<platformTest>
<type>windows</type>
</platformTest>
<fileExists>
<path>${windows_folder_common_appdata}\${system_username}\premid\PreMiD.exe</path>
</fileExists>
</ruleList>
</runProgram>
</preInstallationActionList>
<postInstallationActionList>
<runProgram>
<abortOnError>0</abortOnError>
<program>PreMID.exe</program>
<program>PreMiD.exe</program>
<programArguments>&amp;</programArguments>
<progressText>Launching PreMiD</progressText>
<show>0</show>
@@ -212,13 +231,15 @@
<defaultInstallationMode>unattended</defaultInstallationMode>
<enableRollback>0</enableRollback>
<enableTimestamp>1</enableTimestamp>
<osxPlatforms>osx-intel osx-x86_64</osxPlatforms>
<installationScope>user</installationScope>
<overwritePolicy>onlyIfNewer</overwritePolicy>
<osxApplicationBundleIdentifier>eu.Timeraa.PreMiD</osxApplicationBundleIdentifier>
<outputDirectory>../dist/installer</outputDirectory>
<productDisplayIcon>${installdir}/appIcon.ico</productDisplayIcon>
<saveRelativePaths>1</saveRelativePaths>
<unattendedModeUI>minimal</unattendedModeUI>
<vendor>Timeraa</vendor>
<windowsExecutableIcon>appIcon.ico</windowsExecutableIcon>
<windowsExecutableIcon>../installer_assets/appIcon.ico</windowsExecutableIcon>
<parameterList>
<directoryParameter>
<name>installdir</name>
@@ -234,4 +255,3 @@
</directoryParameter>
</parameterList>
</project>

View File

@@ -8,5 +8,4 @@
<enableSslSupport>1</enableSslSupport>
<outputDirectory>./</outputDirectory>
<installerFilename>updater.${platform_exec_suffix}</installerFilename>
<osxPlatforms>osx-intel osx-x86_64</osxPlatforms>
</autoUpdateProject>

2
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{
"name": "premid",
"version": "2.0.4",
"version": "2.0.5",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@@ -2,7 +2,7 @@
"name": "premid",
"productName": "PreMiD",
"description": "Discord Rich Presence for websites.",
"version": "2.0.4",
"version": "2.0.5",
"repository": "https://github.com/PreMiD/PreMiD",
"scripts": {
"init": "tsc && tsc pkg devMode && node devMode.js compile",

36
pkg.ts
View File

@@ -1,5 +1,5 @@
import * as electronPackager from "electron-packager";
import { platform } from "os";
import { platform, arch } from "os";
import { existsSync, readFileSync, writeFileSync } from "fs";
import { resolve } from "path";
import { exec } from "child_process";
@@ -11,7 +11,7 @@ import * as ora from "ora";
(async () => {
let response = {
os: "current",
arch: "current",
arch: "all",
installer: false
};
@@ -90,7 +90,26 @@ import * as ora from "ora";
}
]);
if (!response.os) return;
//#region WIP
let installerXml = readFileSync(`installer_assets/installer.xml`, "utf-8");
installerXml = installerXml.replace(
"{{VERSION}}",
require("./package.json").version
);
installerXml = installerXml.replace(
/(PACKAGEDNAME)/g,
`PreMiD-${platform()}-${arch()}`
);
ensureDirSync("tmp");
writeFileSync("tmp/installer.xml", installerXml);
//#endregion
if (!response.os) {
process.exit();
return;
}
let icon: string;
@@ -109,7 +128,7 @@ import * as ora from "ora";
removeSync("./dist/app/updater.exe");
let spinner = ora("Packaging app").start(),
packagingOptions = {
packagingOptions: electronPackager.Options = {
dir: "./dist/app",
out: "./dist",
darwinDarkModeSupport: true,
@@ -120,7 +139,9 @@ import * as ora from "ora";
appCategoryType: "Utilities",
appCopyright: `Timeraa 2018-${new Date().getFullYear()}`,
prune: true,
// @ts-ignore
arch: response.arch,
// @ts-ignore
platform: response.os
};
@@ -132,6 +153,7 @@ import * as ora from "ora";
if (!response.installer) {
spinner.text = "Done!";
spinner.succeed();
process.exit();
return;
}
@@ -166,6 +188,7 @@ import * as ora from "ora";
if (!existsSync(bitRockBuilder) || !existsSync(bitRockUpdater)) {
spinner.fail("Bitrock installation not found.");
process.exit();
return;
}
@@ -180,12 +203,13 @@ import * as ora from "ora";
updater.once("exit", (code, signal) => {
if (![0, 1].includes(code)) {
spinner.fail(`Updater failed with code ${code}: ${signal}`);
process.exit();
return;
}
spinner.text = "Building installer";
let builder = exec(
`"${bitRockBuilder}" build installer_assets/PreMiD_x64.xml ${
`"${bitRockBuilder}" build tmp/installer.xml ${
platform() === "win32" ? "windows" : "osx"
}`
);
@@ -195,11 +219,13 @@ import * as ora from "ora";
if (code !== 0) {
spinner.fail(`Error code: ${code}`);
process.exit();
return;
}
spinner.text = "Done!";
spinner.succeed();
process.exit();
return;
});
});

View File

@@ -3,12 +3,12 @@
"module": "commonjs",
"target": "es2018",
"sourceMap": true,
"baseUrl": ".",
"outDir": "dist/app",
"removeComments": true,
"esModuleInterop": true
"esModuleInterop": true,
"typeRoots": ["@types/*"]
},
"include": ["src/**/*"],
"include": ["@types/*", "src/**/*"],
"exclude": [
"devMode.ts",
"pkg.ts",