aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/installer
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2019-05-23 11:50:41 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2019-05-23 11:55:40 +0200
commit1014aca517228089fa117b902d7523964498c5f8 (patch)
tree70c952ce8230f693d80e71a94a1d2b16a1851b94 /installer
parentinstaller: set sidtype from customaction (diff)
downloadwireguard-windows-1014aca517228089fa117b902d7523964498c5f8.tar.xz
wireguard-windows-1014aca517228089fa117b902d7523964498c5f8.zip
installer: do not wait for service to start
Diffstat (limited to 'installer')
-rw-r--r--installer/customactions.js31
1 files changed, 17 insertions, 14 deletions
diff --git a/installer/customactions.js b/installer/customactions.js
index 45095faa..a7ebc95d 100644
--- a/installer/customactions.js
+++ b/installer/customactions.js
@@ -48,8 +48,8 @@ function runWithNoWindowFlash(command) {
function EvaluateWireGuardServices() {
var inst = Session.Installer;
var db = Session.Database;
- var view = db.OpenView("INSERT INTO `ServiceControl` (`ServiceControl`, `Name`, `Event`, `Component_`) VALUES(?, ?, ?, ?) TEMPORARY");
- var rec = inst.CreateRecord(4);
+ var view = db.OpenView("INSERT INTO `ServiceControl` (`ServiceControl`, `Name`, `Event`, `Component_`, `Wait`) VALUES(?, ?, ?, ?, ?) TEMPORARY");
+ var rec = inst.CreateRecord(5);
var serviceKey = "HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services";
var servicePrefix = "WireGuardTunnel$";
var serviceKeyPrefix = serviceKey + "\\" + servicePrefix;
@@ -58,20 +58,23 @@ function EvaluateWireGuardServices() {
var index = 0;
function insertServiceControl(serviceName) {
- var flags = 0x2/*msidbServiceControlEventStop*/ | 0x20/*msidbServiceControlEventUninstallStop*/ | 0x80/*msidbServiceControlEventUninstallDelete*/;
-
- if (shl.IsServiceRunning(serviceName)) {
- flags |= 0x1/*msidbServiceControlEventStart*/;
- logMessage("Scheduling stop on upgrade/uninstall and removal on uninstall of service " + serviceName);
- } else {
- logMessage("Scheduling removal on uninstall of service " + serviceName);
- }
-
- rec.StringData (1/*ServiceControl*/) = serviceName.replace(msiOperators, "_") + (index++).toString();
+ logMessage("Scheduling stop on upgrade or removal on uninstall of service " + serviceName);
+ rec.StringData (1/*ServiceControl*/) = "stop_" + serviceName.replace(msiOperators, "_") + (index++).toString();
rec.StringData (2/*Name */) = serviceName;
- rec.IntegerData(3/*Event */) = flags;
+ rec.IntegerData(3/*Event */) = 0x2/*msidbServiceControlEventStop*/ | 0x20/*msidbServiceControlEventUninstallStop*/ | 0x80/*msidbServiceControlEventUninstallDelete*/;
rec.StringData (4/*Component_ */) = "WireGuardExecutable";
-
+ rec.IntegerData(5/*Wait */) = 1; /* Waits 30 seconds. */
+ view.Execute(rec);
+
+ if (!shl.IsServiceRunning(serviceName))
+ return;
+
+ logMessage("Scheduling start on upgrade of service " + serviceName);
+ rec.StringData (1/*ServiceControl*/) = "start_" + serviceName.replace(msiOperators, "_") + (index++).toString();
+ rec.StringData (2/*Name */) = serviceName;
+ rec.IntegerData(3/*Event */) = 0x1/*msidbServiceControlEventStart*/;
+ rec.StringData (4/*Component_ */) = "WireGuardExecutable";
+ rec.IntegerData(5/*Wait */) = 0; /* No wait, so that failure to restart again isn't fatal. */
view.Execute(rec);
}