예제 #1
0
        private void CustomInstaller_BeforeInstall(object sender, InstallEventArgs e)
        {
            Console.WriteLine(_consoleLineOfStars);
            Console.WriteLine("Enter the service name to install Cache Host as (leave blank to use default):");
            var customName = Console.ReadLine();

            Console.WriteLine(_consoleLineOfStars);
            if (!string.IsNullOrWhiteSpace(customName))
            {
                _serviceInstaller.DisplayName = customName; // +" " + _serviceVersion;
                _serviceInstaller.ServiceName = customName; // +" " + _serviceVersion;
            }

            // Create and save a settings file that says what this installation is named
            var installPath = Path.Combine(new FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName, _settingsFileName);

            File.WriteAllText(installPath, "InstallName = " + _serviceInstaller.ServiceName.Trim());

            Console.WriteLine(_consoleLineOfStars);
            Console.Write("Service account is NetworkService. Use a custom account? (Y/N): ");
            var customServiceKey = Console.ReadKey();

            Console.WriteLine();
            Console.WriteLine(_consoleLineOfStars);
            if (customServiceKey.KeyChar.Equals('y') || customServiceKey.KeyChar.Equals('Y'))
            {
                _serviceProcessInstaller.Account = ServiceAccount.User;
            }

            Console.WriteLine(_consoleLineOfStars);
            Console.Write("Startup type is Automatic. Would you like Manual instead? (Y/N): ");
            var manualStartupKey = Console.ReadKey();

            Console.WriteLine();
            Console.WriteLine(_consoleLineOfStars);
            if (manualStartupKey.KeyChar.Equals('y') || manualStartupKey.KeyChar.Equals('Y'))
            {
                _serviceInstaller.StartType = ServiceStartMode.Manual;
            }

            // Ensure that event log source exists
            if (!EventLog.SourceExists("Cache Host"))
            {
                EventLog.CreateEventSource("Cache Host", "Dache");
            }

            // Create custom performance counters and counter category
            CustomPerformanceCounterInstaller.InstallCounters();
        }
예제 #2
0
        private void CustomInstaller_BeforeUninstall(object sender, InstallEventArgs e)
        {
            // Read the settings file that says what this installation is named - if it exists
            string settings = null;

            try
            {
                var installPath = Path.Combine(new FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName, _settingsFileName);
                settings = File.ReadAllText(installPath);
                // Delete this file
                File.Delete(installPath);
            }
            catch
            {
                // Supress...
            }

            // Check if we have settings
            if (settings != null)
            {
                // We do, split by '='
                var splitSettings = settings.Split(new[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
                if (splitSettings.Length == 2)
                {
                    // Set service name based on installation
                    _serviceInstaller.ServiceName = splitSettings[1].Trim();
                }
            }

            Console.WriteLine(_consoleLineOfStars);
            Console.WriteLine("Do you want to uninstall the performance counters? Only do this if no other Dache Hosts are installed on this computer. (Y/N):");
            var uninstallPerformanceCountersKey = Console.ReadKey();

            Console.WriteLine();
            Console.WriteLine(_consoleLineOfStars);
            if (uninstallPerformanceCountersKey.KeyChar.Equals('y') || uninstallPerformanceCountersKey.KeyChar.Equals('Y'))
            {
                // Delete performance counter category
                CustomPerformanceCounterInstaller.UninstallCounters();
            }
        }