private static void InitialInstallation(ReleaseInstaller installer)
 {
     var currentInstalledVersion = installer.CurrentInstalledVersion;
     if (currentInstalledVersion != null)
         installer.Run();
     else
         Application.Run(new InitialInstallationForm(installer));
 }
        static void Main(string[] args)
        {
            if (!IsRunAsAdministrator())
            {
                RunAsAdministrator(args);
                return;
            }

            Application.ThreadException += Application_ThreadException;
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

            CreateUpdateShortCut();

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            IracingApplicationVersionManagerProvider.MakePortable(Settings.Default);
            Settings.Default.MainExecPath = Assembly.GetExecutingAssembly().Location;
            Settings.Default.Save();

            var installer = new ReleaseInstaller("vipoo", "iRacingReplayOverlay.net");

            if (args.Contains("-update-plugin"))
            {
                var versionStamp = args.First(a => a.StartsWith("-version=")).Substring("-version=".Length);
                var pluginInstaller = installer.ForPlugin("iRacingDirector.Plugin.StandardOverlays");

                Application.Run(new PluginInstallationForm(pluginInstaller, versionStamp));
                return;
            }

            if (args.Contains("-update"))
            {
                Application.Run(new VersionManagerForm());
                return;
            }

            InitialInstallation(installer);
        }
 public VersionManagerForm()
 {
     InitializeComponent();
     installer = new ReleaseInstaller("vipoo", "iRacingReplayOverlay.net");
 }
 public InitialInstallationForm(ReleaseInstaller installer)
 {
     InitializeComponent();
     this.installer = installer;
 }