internal static void installService() { ServiceInstaller serviceInstaller = null; ServiceProcessInstaller serviceProcessInstaller = null; Installer projectInstaller = null; TransactedInstaller transactedInstaller = null; try { serviceInstaller = new ServiceInstaller(); serviceInstaller.ServiceName = "OpenVPNManager"; serviceInstaller.StartType = ServiceStartMode.Automatic; serviceProcessInstaller = new ServiceProcessInstaller(); serviceProcessInstaller.Account = System.ServiceProcess.ServiceAccount.LocalSystem; serviceProcessInstaller.Password = null; serviceProcessInstaller.Username = null; projectInstaller = new Installer(); projectInstaller.Installers.Add(serviceInstaller); projectInstaller.Installers.Add(serviceProcessInstaller); transactedInstaller = new TransactedInstaller(); transactedInstaller.Installers.Add(projectInstaller); transactedInstaller.Context = new InstallContext(); transactedInstaller.Context.Parameters["assemblypath"] = Assembly.GetExecutingAssembly().Location + "\" \"/EXECUTESERVICE"; transactedInstaller.Install(new Hashtable()); } catch (InvalidOperationException e) { if (e.InnerException != null && e.InnerException is Win32Exception)// Probably: "Service already exists." MessageBox.Show("Error: " + e.InnerException.Message); else if (e.InnerException != null && e.InnerException is InvalidOperationException && e.InnerException.InnerException != null && e.InnerException.InnerException is Win32Exception)// Probably: "Permission denied" { String MSG_ServiceInstallPermissionErrorAdvice = Program.res.GetString("MSG_ServiceInstallPermissionErrorAdvice"); MessageBox.Show("Error: " + e.InnerException.InnerException.Message + "\r\n\r\n" + MSG_ServiceInstallPermissionErrorAdvice); } else throw; } finally { if (serviceInstaller != null) serviceInstaller.Dispose(); if (serviceProcessInstaller != null) serviceProcessInstaller.Dispose(); if (projectInstaller != null) projectInstaller.Dispose(); if (transactedInstaller != null) transactedInstaller.Dispose(); } }
internal static void uninstallService() { ServiceInstaller serviceInstaller = null; TransactedInstaller transactedInstaller = null; try { serviceInstaller = new ServiceInstaller(); serviceInstaller.ServiceName = "OpenVPNManager"; transactedInstaller = new TransactedInstaller(); transactedInstaller.Installers.Add(serviceInstaller); transactedInstaller.Uninstall(null); } catch (InstallException e) { if (e.InnerException != null && e.InnerException is SecurityException)// Probably: "Permission denied" { String MSG_ServiceInstallPermissionErrorAdvice = Program.res.GetString("MSG_ServiceInstallPermissionErrorAdvice"); MessageBox.Show("Error: " + e.InnerException.Message + "\r\n\r\n" + MSG_ServiceInstallPermissionErrorAdvice); } else if (e.InnerException != null && e.InnerException is Win32Exception)// Probably: "Service does not exist." MessageBox.Show("Error: " + e.InnerException.Message); else throw; } finally { serviceInstaller.Dispose(); transactedInstaller.Dispose(); } }