prompt for separate user-installs too
This commit is contained in:
@@ -94,6 +94,12 @@ public class WinLauncher extends CopyConfigDir {
|
|||||||
"Service startup failure, please start I2P service with services.msc");
|
"Service startup failure, please start I2P service with services.msc");
|
||||||
System.exit(2);
|
System.exit(2);
|
||||||
}
|
}
|
||||||
|
continuerunning = promptUserInstallStartIfAvailable();
|
||||||
|
if (!continuerunning) {
|
||||||
|
logger.severe(
|
||||||
|
"User-install startup required.");
|
||||||
|
System.exit(2);
|
||||||
|
}
|
||||||
|
|
||||||
// This actually does most of what we use NSIS for if NSIS hasn't
|
// This actually does most of what we use NSIS for if NSIS hasn't
|
||||||
// already done it, which essentially makes this whole thing portable.
|
// already done it, which essentially makes this whole thing portable.
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package net.i2p.router;
|
package net.i2p.router;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
@@ -142,6 +143,48 @@ public class WindowsServiceUtil {
|
|||||||
return "http://tc73n4kivdroccekirco7rhgxdg5f3cjvbaapabupeyzrqwv5guq.b32.i2p/news.su3";
|
return "http://tc73n4kivdroccekirco7rhgxdg5f3cjvbaapabupeyzrqwv5guq.b32.i2p/news.su3";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean checkProgramFilesInstall() {
|
||||||
|
String programFiles = System.getenv("PROGRAMFILES");
|
||||||
|
File programFilesI2P = new File(programFiles, "i2p/i2p.exe");
|
||||||
|
if (programFilesI2P.exists())
|
||||||
|
return true;
|
||||||
|
String programFiles86 = System.getenv("PROGRAMFILES86");
|
||||||
|
File programFiles86I2P = new File(programFiles86, "i2p/i2p.exe");
|
||||||
|
if (programFiles86I2P.exists())
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean promptUserInstallStartIfAvailable() {
|
||||||
|
if (osName() != "windows") {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (checkProgramFilesInstall()) {
|
||||||
|
int a;
|
||||||
|
String message =
|
||||||
|
"It appears you have an existing, unbundled I2P rotuer installed.\n";
|
||||||
|
message +=
|
||||||
|
"However, it is not running yet. Please start it using the shortcut on the desktop.\n";
|
||||||
|
message +=
|
||||||
|
"If you click \"No\", the jpackage router will be launched instead.\n";
|
||||||
|
a = JOptionPane.showConfirmDialog(null, message,
|
||||||
|
"I2P Service detected not running",
|
||||||
|
JOptionPane.YES_NO_OPTION);
|
||||||
|
if (a == JOptionPane.NO_OPTION) {
|
||||||
|
// Do nothing here, this will continue on to launch a jpackaged router
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
// We can't just call `net start` or `sc start` directly, that throws
|
||||||
|
// a permission error. We can start services.msc though, where the
|
||||||
|
// user can start the service themselves. OR maybe we ask for
|
||||||
|
// elevation here? May need to refactor Elevator and Shell32X to
|
||||||
|
// achieve it though
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public static String getServiceState(String serviceName) {
|
public static String getServiceState(String serviceName) {
|
||||||
String stateString = "uninstalled";
|
String stateString = "uninstalled";
|
||||||
int state = getServiceStateInt(serviceName);
|
int state = getServiceStateInt(serviceName);
|
||||||
|
|||||||
Reference in New Issue
Block a user