1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
/****************************************************************************
**
** Copyright (C) 2020 LEAP
**
****************************************************************************/
function Component() {
}
Component.prototype.createOperations = function ()
{
// This will actually install the files
component.createOperations();
// And now our custom actions.
// See https://doc.qt.io/qtinstallerframework/operations.html for reference
//
// We can also use this to register different components (different architecture for instance)
// See https://doc.qt.io/qtinstallerframework/qt-installer-framework-systeminfo-packages-root-meta-installscript-qs.html
if (systemInfo.productType === "windows") {
postInstallWindows();
} else if (systemInfo.productType === "osx") {
postInstallOSX();
} else {
postInstallLinux();
}
}
Component.prototype.installationFinished = function()
{
console.log("DEBUG: running installationFinished");
if (installer.isInstaller() && installer.status == QInstaller.Success) {
var argList = ["-a", "@TargetDir@/DemoLibVPN.app"];
try {
installer.execute("touch", ["/tmp/install-finished"]);
installer.execute("open", argList);
} catch(e) {
console.log(e);
}
}
}
function postInstallWindows() {
component.addElevatedOperation("Execute", "@TargetDir@/helper.exe", "install", "UNDOEXECUTE", "@TargetDir@/helper.exe", "remove");
component.addElevatedOperation("Execute", "@TargetDir@/helper.exe", "start", "UNDOEXECUTE", "@TargetDir@/helper.exe", "stop");
console.log("Adding shortcut entries");
component.addElevatedOperation("Mkdir", "@StartMenuDir@");
component.addElevatedOperation("CreateShortcut", "@TargetDir@/demolib-vpn.exe", "@StartMenuDir@/DemoLibVPN.lnk", "workingDirectory=@TargetDir@", "iconPath=@TargetDir@/icon.ico", "description=Start DemoLibVPN");
// TODO I think this one is not being created because the path doesn't exist yet. We might want to do this by hooking on the installation finished signal instead.
component.addElevatedOperation(
"CreateShortcut",
"@TargetDir@/Uninstall-DemoLibVPN.exe",
"@StartMenuDir@/Uninstall.lnk"
);
}
function postInstallOSX() {
console.log("Post-installation for OSX");
component.addElevatedOperation(
"Execute", "{0}",
"@TargetDir@/post-install.py",
"errormessage=There was an error during the post-installation script, things might be broken. Please report this error and attach the post-install.log file.",
"UNDOEXECUTE",
"@TargetDir@/uninstall.py"
);
}
function postInstallLinux() {
console.log("Post-installation for GNU/Linux");
console.log("Maybe you want to use your package manager instead?");
component.addOperation("AppendFile", "/tmp/riseupvpn.log", "this is a test - written from the installer");
}
|