package net.pms.util; import net.pms.PMS; import net.pms.io.OutputParams; import net.pms.io.ProcessWrapperImpl; /** * Utility class for Windows */ public class WindowsUtil { /** * Private constructor to avoid instantiating this class */ private WindowsUtil() {} /** * Checks if is the Universal Media Server service is installed. * * @return true, if a service named Universal Media Server is installed */ public static boolean isUmsServiceInstalled() { String[] commands = new String[]{ "sc", "query", "\"Universal Media Server\"" }; int[] expectedExitCodes = { 0, 1060 }; String response = ProcessUtil.run(expectedExitCodes, commands); return response.contains("TYPE"); } /** * Executes the needed commands in order to install the Windows service * that starts whenever the machine is started. * This function is called from the General tab. * * @return true if UMS could be installed as a Windows service. * @see net.pms.newgui.GeneralTab#build() */ public static boolean installWin32Service() { String cmdArray[] = new String[]{"win32/service/wrapper.exe", "-i", "wrapper.conf"}; ProcessWrapperImpl pwinstall = new ProcessWrapperImpl(cmdArray, true, new OutputParams(PMS.getConfiguration())); pwinstall.runInSameThread(); return pwinstall.isSuccess(); } /** * Executes the needed commands in order to remove the Windows service. * This function is called from the General tab. * * TODO: Make it detect if the uninstallation was successful * * @return true * @see net.pms.newgui.GeneralTab#build() */ public static boolean uninstallWin32Service() { String cmdArray[] = new String[]{"win32/service/wrapper.exe", "-r", "wrapper.conf"}; OutputParams output = new OutputParams(PMS.getConfiguration()); output.noexitcheck = true; ProcessWrapperImpl pwuninstall = new ProcessWrapperImpl(cmdArray, true, output); pwuninstall.runInSameThread(); return true; } }