diff --git a/.gitignore b/.gitignore index 35be6f7..f1d6df9 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ obj *.user *.suo -flash_*.zip \ No newline at end of file +*.zip +*.7z \ No newline at end of file diff --git a/CleanFlashCommon/SystemInfo.cs b/CleanFlashCommon/SystemInfo.cs index 7f335a7..de78cca 100644 --- a/CleanFlashCommon/SystemInfo.cs +++ b/CleanFlashCommon/SystemInfo.cs @@ -83,6 +83,12 @@ namespace CleanFlashCommon { return versionPath; } + public static bool IsLegacyWindows() { + System.Version version = Environment.OSVersion.Version; + + return version.Major <= 6 && (version.Major != 6 || version.Minor < 2); + } + public static Dictionary GetReplacementStrings() { return replacementStrings; } diff --git a/CleanFlashCommon/Uninstaller.cs b/CleanFlashCommon/Uninstaller.cs index d311ef6..a5f95d5 100644 --- a/CleanFlashCommon/Uninstaller.cs +++ b/CleanFlashCommon/Uninstaller.cs @@ -15,7 +15,7 @@ namespace CleanFlashCommon { "flashplayerapp", "flashplayer_sa", "flashplayer_sa_debug", // Browsers that might be using Flash Player right now "opera", "iexplore", "chrome", "chromium", "brave", "vivaldi", "basilisk", "msedge", - "seamonkey", "palemoon", "k-meleon", "plugin-container" + "seamonkey", "palemoon", "k-meleon", "plugin-container", "waterfox" }; static Uninstaller() { diff --git a/CleanFlashCommon/UpdateChecker.cs b/CleanFlashCommon/UpdateChecker.cs index bd61ce1..3490ee4 100644 --- a/CleanFlashCommon/UpdateChecker.cs +++ b/CleanFlashCommon/UpdateChecker.cs @@ -32,13 +32,11 @@ namespace CleanFlashCommon { } public class UpdateChecker { - private static readonly bool DEBUG = true; - private static readonly string FLASH_VERSION = "34.0.0.175"; - private static readonly string VERSION = "v34.0.0.175"; - private static readonly string FLASH_PLAYER_EXECUTABLE = DEBUG ? "flashplayer_sa_debug.exe" : "flashplayer_sa.exe"; + private static readonly string FLASH_VERSION = "34.0.0.184"; + private static readonly string VERSION = "v34.0.0.184"; private static readonly string AUTHOR = "cleanflash"; private static readonly string REPO = "installer"; - private static readonly string USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36"; + private static readonly string USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"; public static string GetAPILink() { return "https://api.github.com/repos/" + AUTHOR + "/" + REPO + "/releases/latest"; @@ -52,15 +50,6 @@ namespace CleanFlashCommon { return VERSION; } - public static string GetFlashPlayerExecutable() { - return FLASH_PLAYER_EXECUTABLE; - } - - public static bool IsDebug() - { - return DEBUG; - } - private static Version GetLatestVersionUnsafe() { using (WebClient client = new WebClient()) { client.Headers.Add("user-agent", USER_AGENT); diff --git a/CleanFlashInstaller/CleanFlashInstaller.csproj b/CleanFlashInstaller/CleanFlashInstaller.csproj index 19de751..4938ba0 100644 --- a/CleanFlashInstaller/CleanFlashInstaller.csproj +++ b/CleanFlashInstaller/CleanFlashInstaller.csproj @@ -106,8 +106,8 @@ CleanFlashInstaller.Program - - ..\packages\DotNetZip.1.15.0\lib\net40\DotNetZip.dll + + ..\packages\SharpCompress.0.24.0\lib\net35\SharpCompress.dll @@ -122,6 +122,7 @@ + @@ -146,15 +147,7 @@ True - - - - - - - - - + diff --git a/CleanFlashInstaller/InstallEntry.cs b/CleanFlashInstaller/InstallEntry.cs new file mode 100644 index 0000000..82f4ecb --- /dev/null +++ b/CleanFlashInstaller/InstallEntry.cs @@ -0,0 +1,17 @@ +namespace CleanFlashInstaller { + public class InstallEntry { + public string InstallText { get; } + public InstallFlags RequiredFlags { get; } + public string TargetDirectory { get; } + public string RegistryInstructions { get; } + + public InstallEntry(string installText, int requiredFlags, string targetDirectory, string registryInstructions) { + InstallText = installText; + RequiredFlags = new InstallFlags(requiredFlags); + TargetDirectory = targetDirectory; + RegistryInstructions = registryInstructions; + } + + public InstallEntry(string installText, int requiredFlags, string targetDirectory) : this(installText, requiredFlags, targetDirectory, null) { } + } +} diff --git a/CleanFlashInstaller/InstallFlags.cs b/CleanFlashInstaller/InstallFlags.cs index 00d0dbe..e0c6f30 100644 --- a/CleanFlashInstaller/InstallFlags.cs +++ b/CleanFlashInstaller/InstallFlags.cs @@ -2,26 +2,39 @@ namespace CleanFlashInstaller { public class InstallFlags { + public static int NONE = 0; public static int PEPPER = 1 << 0; public static int NETSCAPE = 1 << 1; public static int ACTIVEX = 1 << 2; public static int PLAYER = 1 << 3; public static int PLAYER_START_MENU = 1 << 4; public static int PLAYER_DESKTOP = 1 << 5; + public static int X64 = 1 << 6; + public static int DEBUG = 1 << 7; private static int UNINSTALL_TICKS = 9; - private static int INSTALL_GENERAL_TICKS = 2; + private static int INSTALL_GENERAL_TICKS = 5; private int value = 0; - public InstallFlags() { - value = 0; + public InstallFlags(int value) { + this.value = value; + } + + public InstallFlags() : this(0) { } + + public int GetValue() { + return value; } public bool IsSet(int flag) { return (value & flag) == flag; } + public bool IsSet(InstallFlags flags) { + return IsSet(flags.GetValue()); + } + public bool IsNoneSet() { return value == 0; } diff --git a/CleanFlashInstaller/InstallForm.Designer.cs b/CleanFlashInstaller/InstallForm.Designer.cs index 8f0c51a..ea8d07a 100644 --- a/CleanFlashInstaller/InstallForm.Designer.cs +++ b/CleanFlashInstaller/InstallForm.Designer.cs @@ -33,17 +33,12 @@ namespace CleanFlashInstaller { this.titleLabel = new System.Windows.Forms.Label(); this.subtitleLabel = new System.Windows.Forms.Label(); this.disclaimerPanel = new System.Windows.Forms.Panel(); - this.disclaimerBox = new CleanFlashCommon.ImageCheckBox(); this.choicePanel = new System.Windows.Forms.Panel(); this.activeXLabel = new System.Windows.Forms.Label(); - this.activeXBox = new CleanFlashCommon.ImageCheckBox(); this.netscapeLabel = new System.Windows.Forms.Label(); - this.netscapeBox = new CleanFlashCommon.ImageCheckBox(); this.pepperLabel = new System.Windows.Forms.Label(); - this.pepperBox = new CleanFlashCommon.ImageCheckBox(); this.browserAskLabel = new System.Windows.Forms.Label(); this.installPanel = new System.Windows.Forms.Panel(); - this.progressBar = new CleanFlashCommon.SmoothProgressBar(); this.progressLabel = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.beforeInstallPanel = new System.Windows.Forms.Panel(); @@ -51,19 +46,27 @@ namespace CleanFlashInstaller { this.completePanel = new System.Windows.Forms.Panel(); this.completeLabel = new System.Windows.Forms.LinkLabel(); this.failurePanel = new System.Windows.Forms.Panel(); - this.copyErrorButton = new CleanFlashCommon.GradientButton(); this.failureBox = new System.Windows.Forms.TextBox(); this.failureText = new System.Windows.Forms.Label(); - this.nextButton = new CleanFlashCommon.GradientButton(); - this.prevButton = new CleanFlashCommon.GradientButton(); this.playerChoicePanel = new System.Windows.Forms.Panel(); this.playerStartMenuLabel = new System.Windows.Forms.Label(); - this.playerStartMenuBox = new CleanFlashCommon.ImageCheckBox(); this.playerDesktopLabel = new System.Windows.Forms.Label(); - this.playerDesktopBox = new CleanFlashCommon.ImageCheckBox(); this.playerLabel = new System.Windows.Forms.Label(); - this.playerBox = new CleanFlashCommon.ImageCheckBox(); this.playerAskLabel = new System.Windows.Forms.Label(); + this.nextButton = new CleanFlashCommon.GradientButton(); + this.prevButton = new CleanFlashCommon.GradientButton(); + this.playerStartMenuBox = new CleanFlashCommon.ImageCheckBox(); + this.playerDesktopBox = new CleanFlashCommon.ImageCheckBox(); + this.playerBox = new CleanFlashCommon.ImageCheckBox(); + this.activeXBox = new CleanFlashCommon.ImageCheckBox(); + this.netscapeBox = new CleanFlashCommon.ImageCheckBox(); + this.pepperBox = new CleanFlashCommon.ImageCheckBox(); + this.disclaimerBox = new CleanFlashCommon.ImageCheckBox(); + this.copyErrorButton = new CleanFlashCommon.GradientButton(); + this.progressBar = new CleanFlashCommon.SmoothProgressBar(); + this.debugChoicePanel = new System.Windows.Forms.Panel(); + this.debugAskLabel = new System.Windows.Forms.Label(); + this.debugButton = new CleanFlashCommon.GradientButton(); ((System.ComponentModel.ISupportInitialize)(this.flashLogo)).BeginInit(); this.disclaimerPanel.SuspendLayout(); this.choicePanel.SuspendLayout(); @@ -72,6 +75,7 @@ namespace CleanFlashInstaller { this.completePanel.SuspendLayout(); this.failurePanel.SuspendLayout(); this.playerChoicePanel.SuspendLayout(); + this.debugChoicePanel.SuspendLayout(); this.SuspendLayout(); // // disclaimerLabel @@ -139,26 +143,6 @@ namespace CleanFlashInstaller { this.disclaimerPanel.Size = new System.Drawing.Size(545, 105); this.disclaimerPanel.TabIndex = 8; // - // disclaimerBox - // - this.disclaimerBox.Appearance = System.Windows.Forms.Appearance.Button; - this.disclaimerBox.AutoSize = true; - this.disclaimerBox.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.disclaimerBox.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.disclaimerBox.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.disclaimerBox.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.disclaimerBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.disclaimerBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.disclaimerBox.ImageIndex = 0; - this.disclaimerBox.ImageList = this.checkboxImages; - this.disclaimerBox.Location = new System.Drawing.Point(0, 0); - this.disclaimerBox.Margin = new System.Windows.Forms.Padding(0); - this.disclaimerBox.Name = "disclaimerBox"; - this.disclaimerBox.Size = new System.Drawing.Size(21, 21); - this.disclaimerBox.TabIndex = 2; - this.disclaimerBox.UseVisualStyleBackColor = true; - this.disclaimerBox.CheckedChanged += new System.EventHandler(this.disclaimerBox_CheckedChanged); - // // choicePanel // this.choicePanel.Controls.Add(this.activeXLabel); @@ -183,27 +167,6 @@ namespace CleanFlashInstaller { this.activeXLabel.Text = "ActiveX (OCX)\r\n(IE/Embedded/Desktop)"; this.activeXLabel.Click += new System.EventHandler(this.activeXLabel_Click); // - // activeXBox - // - this.activeXBox.Appearance = System.Windows.Forms.Appearance.Button; - this.activeXBox.AutoSize = true; - this.activeXBox.Checked = true; - this.activeXBox.CheckState = System.Windows.Forms.CheckState.Checked; - this.activeXBox.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.activeXBox.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.activeXBox.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.activeXBox.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.activeXBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.activeXBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.activeXBox.ImageIndex = 1; - this.activeXBox.ImageList = this.checkboxImages; - this.activeXBox.Location = new System.Drawing.Point(365, 47); - this.activeXBox.Margin = new System.Windows.Forms.Padding(0); - this.activeXBox.Name = "activeXBox"; - this.activeXBox.Size = new System.Drawing.Size(21, 21); - this.activeXBox.TabIndex = 7; - this.activeXBox.UseVisualStyleBackColor = true; - // // netscapeLabel // this.netscapeLabel.AutoSize = true; @@ -214,27 +177,6 @@ namespace CleanFlashInstaller { this.netscapeLabel.Text = "Netscape API (NPAPI)\r\n(Firefox/ESR/Basilisk)\r\n"; this.netscapeLabel.Click += new System.EventHandler(this.netscapeLabel_Click); // - // netscapeBox - // - this.netscapeBox.Appearance = System.Windows.Forms.Appearance.Button; - this.netscapeBox.AutoSize = true; - this.netscapeBox.Checked = true; - this.netscapeBox.CheckState = System.Windows.Forms.CheckState.Checked; - this.netscapeBox.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.netscapeBox.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.netscapeBox.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.netscapeBox.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.netscapeBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.netscapeBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.netscapeBox.ImageIndex = 1; - this.netscapeBox.ImageList = this.checkboxImages; - this.netscapeBox.Location = new System.Drawing.Point(186, 47); - this.netscapeBox.Margin = new System.Windows.Forms.Padding(0); - this.netscapeBox.Name = "netscapeBox"; - this.netscapeBox.Size = new System.Drawing.Size(21, 21); - this.netscapeBox.TabIndex = 5; - this.netscapeBox.UseVisualStyleBackColor = true; - // // pepperLabel // this.pepperLabel.AutoSize = true; @@ -245,27 +187,6 @@ namespace CleanFlashInstaller { this.pepperLabel.Text = "Pepper API (PPAPI)\r\n(Chrome/Opera/Brave)"; this.pepperLabel.Click += new System.EventHandler(this.pepperLabel_Click); // - // pepperBox - // - this.pepperBox.Appearance = System.Windows.Forms.Appearance.Button; - this.pepperBox.AutoSize = true; - this.pepperBox.Checked = true; - this.pepperBox.CheckState = System.Windows.Forms.CheckState.Checked; - this.pepperBox.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.pepperBox.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.pepperBox.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.pepperBox.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.pepperBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.pepperBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); - this.pepperBox.ImageIndex = 1; - this.pepperBox.ImageList = this.checkboxImages; - this.pepperBox.Location = new System.Drawing.Point(0, 47); - this.pepperBox.Margin = new System.Windows.Forms.Padding(0); - this.pepperBox.Name = "pepperBox"; - this.pepperBox.Size = new System.Drawing.Size(21, 21); - this.pepperBox.TabIndex = 3; - this.pepperBox.UseVisualStyleBackColor = true; - // // browserAskLabel // this.browserAskLabel.AutoSize = true; @@ -285,18 +206,6 @@ namespace CleanFlashInstaller { this.installPanel.Size = new System.Drawing.Size(545, 105); this.installPanel.TabIndex = 10; // - // progressBar - // - this.progressBar.Location = new System.Drawing.Point(49, 58); - this.progressBar.Maximum = 100; - this.progressBar.Minimum = 0; - this.progressBar.Name = "progressBar"; - this.progressBar.ProgressBarColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(97)))), ((int)(((byte)(147)))), ((int)(((byte)(232))))); - this.progressBar.ProgressBarColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(99)))), ((int)(((byte)(232))))); - this.progressBar.Size = new System.Drawing.Size(451, 23); - this.progressBar.TabIndex = 2; - this.progressBar.Value = 0; - // // progressLabel // this.progressLabel.AutoSize = true; @@ -363,23 +272,6 @@ namespace CleanFlashInstaller { this.failurePanel.Size = new System.Drawing.Size(545, 105); this.failurePanel.TabIndex = 13; // - // copyErrorButton - // - this.copyErrorButton.BackColor = System.Drawing.Color.Black; - this.copyErrorButton.Color1 = System.Drawing.Color.FromArgb(((int)(((byte)(118)))), ((int)(((byte)(118)))), ((int)(((byte)(118))))); - this.copyErrorButton.Color2 = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(81)))), ((int)(((byte)(81))))); - this.copyErrorButton.DisableAlpha = 0.644D; - this.copyErrorButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.copyErrorButton.ForeColor = System.Drawing.SystemColors.Control; - this.copyErrorButton.HoverAlpha = 0.875D; - this.copyErrorButton.Location = new System.Drawing.Point(441, 58); - this.copyErrorButton.Name = "copyErrorButton"; - this.copyErrorButton.Size = new System.Drawing.Size(104, 31); - this.copyErrorButton.TabIndex = 14; - this.copyErrorButton.Text = "COPY"; - this.copyErrorButton.UseVisualStyleBackColor = false; - this.copyErrorButton.Click += new System.EventHandler(this.copyErrorButton_Click); - // // failureBox // this.failureBox.Location = new System.Drawing.Point(4, 44); @@ -398,6 +290,59 @@ namespace CleanFlashInstaller { this.failureText.TabIndex = 14; this.failureText.Text = "Oops! The installation process has encountered an unexpected problem.\r\nThe follow" + "ing details could be useful. Press the Retry button to try again."; + // + // playerChoicePanel + // + this.playerChoicePanel.Controls.Add(this.playerStartMenuLabel); + this.playerChoicePanel.Controls.Add(this.playerStartMenuBox); + this.playerChoicePanel.Controls.Add(this.playerDesktopLabel); + this.playerChoicePanel.Controls.Add(this.playerDesktopBox); + this.playerChoicePanel.Controls.Add(this.playerLabel); + this.playerChoicePanel.Controls.Add(this.playerBox); + this.playerChoicePanel.Controls.Add(this.playerAskLabel); + this.playerChoicePanel.Location = new System.Drawing.Point(90, 162); + this.playerChoicePanel.Name = "playerChoicePanel"; + this.playerChoicePanel.Size = new System.Drawing.Size(545, 105); + this.playerChoicePanel.TabIndex = 10; + // + // playerStartMenuLabel + // + this.playerStartMenuLabel.AutoSize = true; + this.playerStartMenuLabel.Location = new System.Drawing.Point(389, 47); + this.playerStartMenuLabel.Name = "playerStartMenuLabel"; + this.playerStartMenuLabel.Size = new System.Drawing.Size(104, 34); + this.playerStartMenuLabel.TabIndex = 8; + this.playerStartMenuLabel.Text = "Create Shortcuts\r\nin Start Menu"; + this.playerStartMenuLabel.Click += new System.EventHandler(this.playerStartMenuLabel_Click); + // + // playerDesktopLabel + // + this.playerDesktopLabel.AutoSize = true; + this.playerDesktopLabel.Location = new System.Drawing.Point(210, 47); + this.playerDesktopLabel.Name = "playerDesktopLabel"; + this.playerDesktopLabel.Size = new System.Drawing.Size(104, 34); + this.playerDesktopLabel.TabIndex = 6; + this.playerDesktopLabel.Text = "Create Shortcuts\r\non Desktop"; + this.playerDesktopLabel.Click += new System.EventHandler(this.playerDesktopLabel_Click); + // + // playerLabel + // + this.playerLabel.AutoSize = true; + this.playerLabel.Location = new System.Drawing.Point(24, 47); + this.playerLabel.Name = "playerLabel"; + this.playerLabel.Size = new System.Drawing.Size(110, 34); + this.playerLabel.TabIndex = 4; + this.playerLabel.Text = "Install Standalone\r\nFlash Player"; + this.playerLabel.Click += new System.EventHandler(this.playerLabel_Click); + // + // playerAskLabel + // + this.playerAskLabel.AutoSize = true; + this.playerAskLabel.Location = new System.Drawing.Point(-2, 2); + this.playerAskLabel.Name = "playerAskLabel"; + this.playerAskLabel.Size = new System.Drawing.Size(314, 17); + this.playerAskLabel.TabIndex = 0; + this.playerAskLabel.Text = "Would you like to install the standalone Flash Player?"; // // nextButton // @@ -433,30 +378,6 @@ namespace CleanFlashInstaller { this.prevButton.UseVisualStyleBackColor = false; this.prevButton.Click += new System.EventHandler(this.prevButton_Click); // - // playerChoicePanel - // - this.playerChoicePanel.Controls.Add(this.playerStartMenuLabel); - this.playerChoicePanel.Controls.Add(this.playerStartMenuBox); - this.playerChoicePanel.Controls.Add(this.playerDesktopLabel); - this.playerChoicePanel.Controls.Add(this.playerDesktopBox); - this.playerChoicePanel.Controls.Add(this.playerLabel); - this.playerChoicePanel.Controls.Add(this.playerBox); - this.playerChoicePanel.Controls.Add(this.playerAskLabel); - this.playerChoicePanel.Location = new System.Drawing.Point(90, 162); - this.playerChoicePanel.Name = "playerChoicePanel"; - this.playerChoicePanel.Size = new System.Drawing.Size(545, 105); - this.playerChoicePanel.TabIndex = 10; - // - // playerStartMenuLabel - // - this.playerStartMenuLabel.AutoSize = true; - this.playerStartMenuLabel.Location = new System.Drawing.Point(389, 47); - this.playerStartMenuLabel.Name = "playerStartMenuLabel"; - this.playerStartMenuLabel.Size = new System.Drawing.Size(104, 34); - this.playerStartMenuLabel.TabIndex = 8; - this.playerStartMenuLabel.Text = "Create Shortcuts\r\nin Start Menu"; - this.playerStartMenuLabel.Click += new System.EventHandler(this.playerStartMenuLabel_Click); - // // playerStartMenuBox // this.playerStartMenuBox.Appearance = System.Windows.Forms.Appearance.Button; @@ -478,16 +399,6 @@ namespace CleanFlashInstaller { this.playerStartMenuBox.TabIndex = 7; this.playerStartMenuBox.UseVisualStyleBackColor = true; // - // playerDesktopLabel - // - this.playerDesktopLabel.AutoSize = true; - this.playerDesktopLabel.Location = new System.Drawing.Point(210, 47); - this.playerDesktopLabel.Name = "playerDesktopLabel"; - this.playerDesktopLabel.Size = new System.Drawing.Size(104, 34); - this.playerDesktopLabel.TabIndex = 6; - this.playerDesktopLabel.Text = "Create Shortcuts\r\non Desktop"; - this.playerDesktopLabel.Click += new System.EventHandler(this.playerDesktopLabel_Click); - // // playerDesktopBox // this.playerDesktopBox.Appearance = System.Windows.Forms.Appearance.Button; @@ -509,16 +420,6 @@ namespace CleanFlashInstaller { this.playerDesktopBox.TabIndex = 5; this.playerDesktopBox.UseVisualStyleBackColor = true; // - // playerLabel - // - this.playerLabel.AutoSize = true; - this.playerLabel.Location = new System.Drawing.Point(24, 47); - this.playerLabel.Name = "playerLabel"; - this.playerLabel.Size = new System.Drawing.Size(110, 34); - this.playerLabel.TabIndex = 4; - this.playerLabel.Text = "Install Standalone\r\nFlash Player"; - this.playerLabel.Click += new System.EventHandler(this.playerLabel_Click); - // // playerBox // this.playerBox.Appearance = System.Windows.Forms.Appearance.Button; @@ -541,14 +442,154 @@ namespace CleanFlashInstaller { this.playerBox.UseVisualStyleBackColor = true; this.playerBox.CheckedChanged += new System.EventHandler(this.playerBox_CheckedChanged); // - // playerAskLabel + // activeXBox // - this.playerAskLabel.AutoSize = true; - this.playerAskLabel.Location = new System.Drawing.Point(-2, 2); - this.playerAskLabel.Name = "playerAskLabel"; - this.playerAskLabel.Size = new System.Drawing.Size(314, 17); - this.playerAskLabel.TabIndex = 0; - this.playerAskLabel.Text = "Would you like to install the standalone Flash Player?"; + this.activeXBox.Appearance = System.Windows.Forms.Appearance.Button; + this.activeXBox.AutoSize = true; + this.activeXBox.Checked = true; + this.activeXBox.CheckState = System.Windows.Forms.CheckState.Checked; + this.activeXBox.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.activeXBox.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.activeXBox.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.activeXBox.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.activeXBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.activeXBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.activeXBox.ImageIndex = 1; + this.activeXBox.ImageList = this.checkboxImages; + this.activeXBox.Location = new System.Drawing.Point(365, 47); + this.activeXBox.Margin = new System.Windows.Forms.Padding(0); + this.activeXBox.Name = "activeXBox"; + this.activeXBox.Size = new System.Drawing.Size(21, 21); + this.activeXBox.TabIndex = 7; + this.activeXBox.UseVisualStyleBackColor = true; + // + // netscapeBox + // + this.netscapeBox.Appearance = System.Windows.Forms.Appearance.Button; + this.netscapeBox.AutoSize = true; + this.netscapeBox.Checked = true; + this.netscapeBox.CheckState = System.Windows.Forms.CheckState.Checked; + this.netscapeBox.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.netscapeBox.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.netscapeBox.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.netscapeBox.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.netscapeBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.netscapeBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.netscapeBox.ImageIndex = 1; + this.netscapeBox.ImageList = this.checkboxImages; + this.netscapeBox.Location = new System.Drawing.Point(186, 47); + this.netscapeBox.Margin = new System.Windows.Forms.Padding(0); + this.netscapeBox.Name = "netscapeBox"; + this.netscapeBox.Size = new System.Drawing.Size(21, 21); + this.netscapeBox.TabIndex = 5; + this.netscapeBox.UseVisualStyleBackColor = true; + // + // pepperBox + // + this.pepperBox.Appearance = System.Windows.Forms.Appearance.Button; + this.pepperBox.AutoSize = true; + this.pepperBox.Checked = true; + this.pepperBox.CheckState = System.Windows.Forms.CheckState.Checked; + this.pepperBox.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.pepperBox.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.pepperBox.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.pepperBox.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.pepperBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.pepperBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.pepperBox.ImageIndex = 1; + this.pepperBox.ImageList = this.checkboxImages; + this.pepperBox.Location = new System.Drawing.Point(0, 47); + this.pepperBox.Margin = new System.Windows.Forms.Padding(0); + this.pepperBox.Name = "pepperBox"; + this.pepperBox.Size = new System.Drawing.Size(21, 21); + this.pepperBox.TabIndex = 3; + this.pepperBox.UseVisualStyleBackColor = true; + // + // disclaimerBox + // + this.disclaimerBox.Appearance = System.Windows.Forms.Appearance.Button; + this.disclaimerBox.AutoSize = true; + this.disclaimerBox.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.disclaimerBox.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.disclaimerBox.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.disclaimerBox.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.disclaimerBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.disclaimerBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.disclaimerBox.ImageIndex = 0; + this.disclaimerBox.ImageList = this.checkboxImages; + this.disclaimerBox.Location = new System.Drawing.Point(0, 0); + this.disclaimerBox.Margin = new System.Windows.Forms.Padding(0); + this.disclaimerBox.Name = "disclaimerBox"; + this.disclaimerBox.Size = new System.Drawing.Size(21, 21); + this.disclaimerBox.TabIndex = 2; + this.disclaimerBox.UseVisualStyleBackColor = true; + this.disclaimerBox.CheckedChanged += new System.EventHandler(this.disclaimerBox_CheckedChanged); + // + // copyErrorButton + // + this.copyErrorButton.BackColor = System.Drawing.Color.Black; + this.copyErrorButton.Color1 = System.Drawing.Color.FromArgb(((int)(((byte)(118)))), ((int)(((byte)(118)))), ((int)(((byte)(118))))); + this.copyErrorButton.Color2 = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(81)))), ((int)(((byte)(81))))); + this.copyErrorButton.DisableAlpha = 0.644D; + this.copyErrorButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.copyErrorButton.ForeColor = System.Drawing.SystemColors.Control; + this.copyErrorButton.HoverAlpha = 0.875D; + this.copyErrorButton.Location = new System.Drawing.Point(441, 58); + this.copyErrorButton.Name = "copyErrorButton"; + this.copyErrorButton.Size = new System.Drawing.Size(104, 31); + this.copyErrorButton.TabIndex = 14; + this.copyErrorButton.Text = "COPY"; + this.copyErrorButton.UseVisualStyleBackColor = false; + this.copyErrorButton.Click += new System.EventHandler(this.copyErrorButton_Click); + // + // progressBar + // + this.progressBar.Location = new System.Drawing.Point(49, 58); + this.progressBar.Maximum = 100; + this.progressBar.Minimum = 0; + this.progressBar.Name = "progressBar"; + this.progressBar.ProgressBarColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(97)))), ((int)(((byte)(147)))), ((int)(((byte)(232))))); + this.progressBar.ProgressBarColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(99)))), ((int)(((byte)(232))))); + this.progressBar.Size = new System.Drawing.Size(451, 23); + this.progressBar.TabIndex = 2; + this.progressBar.Value = 0; + // + // debugChoicePanel + // + this.debugChoicePanel.Controls.Add(this.debugButton); + this.debugChoicePanel.Controls.Add(this.debugAskLabel); + this.debugChoicePanel.Location = new System.Drawing.Point(90, 163); + this.debugChoicePanel.Name = "debugChoicePanel"; + this.debugChoicePanel.Size = new System.Drawing.Size(545, 105); + this.debugChoicePanel.TabIndex = 11; + // + // debugAskLabel + // + this.debugAskLabel.AutoSize = true; + this.debugAskLabel.Location = new System.Drawing.Point(-2, 2); + this.debugAskLabel.Name = "debugAskLabel"; + this.debugAskLabel.Size = new System.Drawing.Size(535, 51); + this.debugAskLabel.TabIndex = 0; + this.debugAskLabel.Text = "Would you like to install the debug version of Clean Flash Player?\r\nYou should on" + + "ly choose the debug version if you are planning to create Flash applications.\r\nI" + + "f you are not sure, simply press NEXT."; + // + // debugButton + // + this.debugButton.BackColor = System.Drawing.Color.Black; + this.debugButton.Color1 = System.Drawing.Color.FromArgb(((int)(((byte)(118)))), ((int)(((byte)(118)))), ((int)(((byte)(118))))); + this.debugButton.Color2 = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(81)))), ((int)(((byte)(81))))); + this.debugButton.DisableAlpha = 0.644D; + this.debugButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.debugButton.ForeColor = System.Drawing.SystemColors.Control; + this.debugButton.HoverAlpha = 0.875D; + this.debugButton.Location = new System.Drawing.Point(186, 65); + this.debugButton.Name = "debugButton"; + this.debugButton.Size = new System.Drawing.Size(176, 31); + this.debugButton.TabIndex = 8; + this.debugButton.Text = "INSTALL DEBUG VERSION"; + this.debugButton.UseVisualStyleBackColor = false; + this.debugButton.Click += new System.EventHandler(this.debugButton_Click); // // InstallForm // @@ -562,13 +603,14 @@ namespace CleanFlashInstaller { this.Controls.Add(this.flashLogo); this.Controls.Add(this.prevButton); this.Controls.Add(this.separator); + this.Controls.Add(this.completePanel); + this.Controls.Add(this.beforeInstallPanel); + this.Controls.Add(this.installPanel); + this.Controls.Add(this.debugChoicePanel); this.Controls.Add(this.playerChoicePanel); this.Controls.Add(this.choicePanel); this.Controls.Add(this.disclaimerPanel); this.Controls.Add(this.failurePanel); - this.Controls.Add(this.completePanel); - this.Controls.Add(this.beforeInstallPanel); - this.Controls.Add(this.installPanel); this.Font = new System.Drawing.Font("Segoe UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.ForeColor = System.Drawing.SystemColors.ControlLightLight; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; @@ -594,6 +636,8 @@ namespace CleanFlashInstaller { this.failurePanel.PerformLayout(); this.playerChoicePanel.ResumeLayout(false); this.playerChoicePanel.PerformLayout(); + this.debugChoicePanel.ResumeLayout(false); + this.debugChoicePanel.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -639,6 +683,9 @@ namespace CleanFlashInstaller { private System.Windows.Forms.Label playerLabel; private CleanFlashCommon.ImageCheckBox playerBox; private System.Windows.Forms.Label playerAskLabel; + private System.Windows.Forms.Panel debugChoicePanel; + private CleanFlashCommon.GradientButton debugButton; + private System.Windows.Forms.Label debugAskLabel; } } diff --git a/CleanFlashInstaller/InstallForm.cs b/CleanFlashInstaller/InstallForm.cs index f9c891c..b0fb85f 100644 --- a/CleanFlashInstaller/InstallForm.cs +++ b/CleanFlashInstaller/InstallForm.cs @@ -10,13 +10,14 @@ namespace CleanFlashInstaller { private static string COMPLETE_INSTALL_TEXT = @"Clean Flash Player has been successfully installed! Don't forget, Flash Player is no longer compatible with new browsers. We recommend using: • Older Google Chrome ≤ 87 - • Older Mozilla Firefox ≤ 84 or Basilisk Browser + • Older Mozilla Firefox ≤ 84 or Waterfox For Flash Player updates, check out Clean Flash Player's website!"; private static string COMPLETE_UNINSTALL_TEXT = @" All versions of Flash Player have been successfully uninstalled. If you ever change your mind, check out Clean Flash Player's website!"; + private bool debugChosen = false; public InstallForm() { InitializeComponent(); @@ -30,6 +31,7 @@ If you ever change your mind, check out Clean Flash Player's website!"; disclaimerPanel.Visible = false; choicePanel.Visible = false; playerChoicePanel.Visible = false; + debugChoicePanel.Visible = false; beforeInstallPanel.Visible = false; installPanel.Visible = false; completePanel.Visible = false; @@ -57,6 +59,14 @@ If you ever change your mind, check out Clean Flash Player's website!"; nextButton.Text = "NEXT"; } + private void OpenDebugChoicePanel() { + HideAllPanels(); + debugChoicePanel.Visible = true; + debugChosen = false; + prevButton.Text = "BACK"; + nextButton.Text = "NEXT"; + } + private string JoinStringsWithAnd(List strings) { string text = string.Join(", ", strings); int index = text.LastIndexOf(", "); @@ -117,8 +127,8 @@ If you ever change your mind, check out Clean Flash Player's website!"; if (pepperBox.Checked || netscapeBox.Checked || activeXBox.Checked) { completeLabel.Text = COMPLETE_INSTALL_TEXT; - completeLabel.Links.Add(new LinkLabel.Link(212, 16)); - completeLabel.Links.Add(new LinkLabel.Link(268, 28)); + completeLabel.Links.Add(new LinkLabel.Link(212, 8)); + completeLabel.Links.Add(new LinkLabel.Link(260, 28)); } else { completeLabel.Text = COMPLETE_UNINSTALL_TEXT; completeLabel.Links.Add(new LinkLabel.Link(110, 28)); @@ -143,6 +153,7 @@ If you ever change your mind, check out Clean Flash Player's website!"; flags.SetConditionally(playerBox.Checked, InstallFlags.PLAYER); flags.SetConditionally(playerDesktopBox.Checked, InstallFlags.PLAYER_DESKTOP); flags.SetConditionally(playerStartMenuBox.Checked, InstallFlags.PLAYER_START_MENU); + flags.SetConditionally(debugChosen, InstallFlags.DEBUG); progressBar.Value = 0; progressBar.Maximum = flags.GetTicks(); @@ -173,7 +184,7 @@ If you ever change your mind, check out Clean Flash Player's website!"; private void InstallForm_Load(object sender, EventArgs e) { string version = UpdateChecker.GetFlashVersion(); - subtitleLabel.Text = string.Format("built from version {0} ({1})", version, UpdateChecker.IsDebug() ? "DEBUG" : "China"); + subtitleLabel.Text = string.Format("built from version {0} ({1})", version, "China"); Text = string.Format("Clean Flash Player {0} Installer", version); OpenDisclaimerPanel(); @@ -186,9 +197,11 @@ If you ever change your mind, check out Clean Flash Player's website!"; } else if (choicePanel.Visible) { OpenDisclaimerPanel(); } else if (beforeInstallPanel.Visible) { - OpenPlayerChoicePanel(); + OpenDebugChoicePanel(); } else if (playerChoicePanel.Visible) { OpenChoicePanel(); + } else if (debugChoicePanel.Visible) { + OpenPlayerChoicePanel(); } } @@ -198,6 +211,8 @@ If you ever change your mind, check out Clean Flash Player's website!"; } else if (choicePanel.Visible) { OpenPlayerChoicePanel(); } else if (playerChoicePanel.Visible) { + OpenDebugChoicePanel(); + } else if (debugChoicePanel.Visible) { OpenBeforeInstall(); } else if (beforeInstallPanel.Visible || failurePanel.Visible) { OpenInstall(); @@ -269,7 +284,7 @@ If you ever change your mind, check out Clean Flash Player's website!"; private void completeLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { if (e.Link.Start == 212) { - Process.Start("https://www.basilisk-browser.org"); + Process.Start("https://waterfox.net"); } else { Process.Start("https://cleanflash.github.io"); } @@ -279,5 +294,10 @@ If you ever change your mind, check out Clean Flash Player's website!"; Clipboard.SetText(failureBox.Text); MessageBox.Show("Copied error message to clipboard!", "Clean Flash Installer", MessageBoxButtons.OK, MessageBoxIcon.Information); } + + private void debugButton_Click(object sender, EventArgs e) { + debugChosen = MessageBox.Show("Are you sure you want to install the debug version?\n\nThis version is only meant to be used by experienced developers!\nIf you are not sure, choose No.", "Clean Flash Installer", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes; + OpenBeforeInstall(); + } } } diff --git a/CleanFlashInstaller/InstallForm.resx b/CleanFlashInstaller/InstallForm.resx index 4b032cd..9f3765f 100644 --- a/CleanFlashInstaller/InstallForm.resx +++ b/CleanFlashInstaller/InstallForm.resx @@ -133,7 +133,7 @@ Adobe is not required by any means to provide support for this version of Flash AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACY - CAAAAk1TRnQBSQFMAgEBAgEAAegBAQHoAQEBDwEAAQ8BAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAQgBAgEIAQIBDwEAAQ8BAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABPAMAAQ8DAAEBAQABCAUAAYQBAxgAAYACAAGAAwACgAEAAYADAAGAAQABgAEAAoACAAPAAQABwAHc AcABAAHwAcoBpgEAATMFAAEzAQABMwEAATMBAAIzAgADFgEAAxwBAAMiAQADKQEAA1UBAANNAQADQgEA AzkBAAGAAXwB/wEAAlAB/wEAAZMBAAHWAQAB/wHsAcwBAAHGAdYB7wEAAdYC5wEAAZABqQGtAgAB/wEz diff --git a/CleanFlashInstaller/Installer.cs b/CleanFlashInstaller/Installer.cs index ce2ce0b..907ae0c 100644 --- a/CleanFlashInstaller/Installer.cs +++ b/CleanFlashInstaller/Installer.cs @@ -4,7 +4,9 @@ using System.Collections.Generic; using System.IO; using System.Reflection; using System.Diagnostics; -using Ionic.Zip; +using SharpCompress.Archives.SevenZip; +using SharpCompress.Common; +using SharpCompress.Readers; using IWshRuntimeLibrary; namespace CleanFlashInstaller { @@ -25,11 +27,50 @@ namespace CleanFlashInstaller { } } - public static void ExtractArchive(string archiveName, string targetDirectory) { - using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("CleanFlashInstaller." + archiveName)) { - using (ZipFile archive = ZipFile.Read(stream)) { - archive.ExtractAll(targetDirectory, ExtractExistingFileAction.OverwriteSilently); + public static void ExtractArchive(SevenZipArchive archive, Dictionary entries, IProgressForm form, InstallFlags flags) { + IReader reader = archive.ExtractAllEntries(); + bool legacy = SystemInfo.IsLegacyWindows(); + string lastKey = null; + + while (reader.MoveToNextEntry()) { + if (reader.Entry.IsDirectory) { + continue; + } + + string filename = reader.Entry.Key.Split('/')[0]; + string installKey = filename.Split('-')[0]; + InstallEntry installEntry = entries[installKey]; + + if (installEntry.RequiredFlags.GetValue() != InstallFlags.NONE) { + if (!flags.IsSet(installEntry.RequiredFlags)) { + continue; + } + + if (flags.IsSet(InstallFlags.DEBUG) != filename.Contains("-debug")) { + continue; + } + } + + if (installEntry.RequiredFlags.IsSet(InstallFlags.ACTIVEX)) { + if (legacy != filename.Contains("-legacy")) { + continue; + } + } + + if (!installKey.Equals(lastKey)) { + form.UpdateProgressLabel(installEntry.InstallText, true); + + if (!Directory.Exists(installEntry.TargetDirectory)) { + Directory.CreateDirectory(installEntry.TargetDirectory); + } + + lastKey = installKey; } + + reader.WriteEntryToDirectory(installEntry.TargetDirectory, new ExtractionOptions() { + ExtractFullPath = false, + Overwrite = true + }); } } @@ -46,12 +87,7 @@ namespace CleanFlashInstaller { shortcut.Save(); } - public static void Install(IProgressForm form, InstallFlags flags) { - if (flags.IsNoneSet()) { - // No packages should be installed. - return; - } - + private static void InstallFromArchive(SevenZipArchive archive, IProgressForm form, InstallFlags flags) { string flash32Path = SystemInfo.GetFlash32Path(); string flash64Path = SystemInfo.GetFlash64Path(); string system32Path = SystemInfo.GetSystem32Path(); @@ -59,37 +95,31 @@ namespace CleanFlashInstaller { List registryToApply = new List() { Properties.Resources.installGeneral }; if (Environment.Is64BitOperatingSystem) { + flags.SetFlag(InstallFlags.X64); registryToApply.Add(Properties.Resources.installGeneral64); } - form.UpdateProgressLabel("Installing Flash Player utilities...", true); - ExtractArchive("flash_gen_32.zip", system32Path); - form.UpdateProgressLabel("Extracting uninstaller..", true); - ExtractArchive("flash_uninstaller.zip", flashProgram32Path); + Dictionary entries = new Dictionary() { + { "controlpanel", new InstallEntry("Installing Flash Player utilities...", InstallFlags.NONE, system32Path) }, + { "uninstaller", new InstallEntry("Extracting uninstaller...", InstallFlags.NONE, flashProgram32Path) }, + { "standalone", new InstallEntry("Installing 32-bit Standalone Flash Player...", InstallFlags.PLAYER, flashProgram32Path) }, + { "ocx32", new InstallEntry("Installing 32-bit Flash Player for Internet Explorer...", InstallFlags.ACTIVEX, flash32Path) }, + { "np32", new InstallEntry("Installing 32-bit Flash Player for Firefox...", InstallFlags.NETSCAPE, flash32Path, Properties.Resources.installNP) }, + { "pp32", new InstallEntry("Installing 32-bit Flash Player for Chrome...", InstallFlags.PEPPER, flash32Path, Properties.Resources.installPP) }, + { "ocx64", new InstallEntry("Installing 64-bit Flash Player for Internet Explorer...", InstallFlags.ACTIVEX | InstallFlags.X64, flash64Path) }, + { "np64", new InstallEntry("Installing 64-bit Flash Player for Firefox...", InstallFlags.NETSCAPE | InstallFlags.X64, flash64Path, Properties.Resources.installNP64) }, + { "pp64", new InstallEntry("Installing 64-bit Flash Player for Chrome...", InstallFlags.PEPPER | InstallFlags.X64, flash64Path, Properties.Resources.installPP64) }, + }; - if (flags.IsSet(InstallFlags.PEPPER)) { - form.UpdateProgressLabel("Installing 32-bit Flash Player for Chrome...", true); - ExtractArchive("flash_pp_32.zip", flash32Path); - registryToApply.Add(Properties.Resources.installPP); - } - if (flags.IsSet(InstallFlags.NETSCAPE)) { - form.UpdateProgressLabel("Installing 32-bit Flash Player for Firefox...", true); - ExtractArchive("flash_np_32.zip", flash32Path); - registryToApply.Add(Properties.Resources.installNP); - } - if (flags.IsSet(InstallFlags.ACTIVEX)) { - form.UpdateProgressLabel("Installing 32-bit Flash Player for Internet Explorer...", true); - ExtractArchive("flash_ocx_32.zip", flash32Path); - } - if (flags.IsSet(InstallFlags.PLAYER)) { - form.UpdateProgressLabel("Installing 32-bit Standalone Flash Player...", true); - ExtractArchive("flash_player_32.zip", flashProgram32Path); + ExtractArchive(archive, entries, form, flags); + if (flags.IsSet(InstallFlags.PLAYER)) { + bool debug = flags.IsSet(InstallFlags.DEBUG); string name = "Flash Player"; string description = "Standalone Flash Player " + UpdateChecker.GetFlashVersion(); - string executable = Path.Combine(flashProgram32Path, UpdateChecker.GetFlashPlayerExecutable()); + string executable = Path.Combine(flashProgram32Path, debug ? "flashplayer_sa_debug.exe" : "flashplayer_sa.exe"); - if (UpdateChecker.IsDebug()) { + if (debug) { name += " (Debug)"; description += " (Debug)"; } @@ -103,20 +133,9 @@ namespace CleanFlashInstaller { } } - if (Environment.Is64BitOperatingSystem) { - if (flags.IsSet(InstallFlags.PEPPER)) { - form.UpdateProgressLabel("Installing 64-bit Flash Player for Chrome...", true); - ExtractArchive("flash_pp_64.zip", flash64Path); - registryToApply.Add(Properties.Resources.installPP64); - } - if (flags.IsSet(InstallFlags.NETSCAPE)) { - form.UpdateProgressLabel("Installing 64-bit Flash Player for Firefox...", true); - ExtractArchive("flash_np_64.zip", flash64Path); - registryToApply.Add(Properties.Resources.installNP64); - } - if (flags.IsSet(InstallFlags.ACTIVEX)) { - form.UpdateProgressLabel("Installing 64-bit Flash Player for Internet Explorer...", true); - ExtractArchive("flash_ocx_64.zip", flash64Path); + foreach (InstallEntry entry in entries.Values) { + if (flags.IsSet(entry.RequiredFlags) && entry.RegistryInstructions != null) { + registryToApply.Add(entry.RegistryInstructions); } } @@ -133,5 +152,18 @@ namespace CleanFlashInstaller { } } } + + public static void Install(IProgressForm form, InstallFlags flags) { + if (flags.IsNoneSet()) { + // No packages should be installed. + return; + } + + using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("CleanFlashInstaller.cleanflash.7z")) { + using (SevenZipArchive archive = SevenZipArchive.Open(stream)) { + InstallFromArchive(archive, form, flags); + } + } + } } } \ No newline at end of file diff --git a/CleanFlashInstaller/Properties/AssemblyInfo.cs b/CleanFlashInstaller/Properties/AssemblyInfo.cs index 4e4a98c..50f493c 100644 --- a/CleanFlashInstaller/Properties/AssemblyInfo.cs +++ b/CleanFlashInstaller/Properties/AssemblyInfo.cs @@ -5,11 +5,11 @@ using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("Clean Flash Player 34.0.0.175 Installer")] +[assembly: AssemblyTitle("Clean Flash Player 34.0.0.184 Installer")] [assembly: AssemblyDescription("The newest version of Flash Player, patched and ready to go beyond 2021.")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("FlashPatch Team")] -[assembly: AssemblyProduct("Clean Flash Player 34.0.0.175 Installer")] +[assembly: AssemblyProduct("Clean Flash Player 34.0.0.184 Installer")] [assembly: AssemblyCopyright("")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("34.0.0.175")] -[assembly: AssemblyFileVersion("34.0.0.175")] +[assembly: AssemblyVersion("34.0.0.184")] +[assembly: AssemblyFileVersion("34.0.0.184")] diff --git a/CleanFlashInstaller/packages.config b/CleanFlashInstaller/packages.config index 0131b8f..f26b7c9 100644 --- a/CleanFlashInstaller/packages.config +++ b/CleanFlashInstaller/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/CleanFlashUninstaller/Properties/AssemblyInfo.cs b/CleanFlashUninstaller/Properties/AssemblyInfo.cs index 29efbf1..443a1fb 100644 --- a/CleanFlashUninstaller/Properties/AssemblyInfo.cs +++ b/CleanFlashUninstaller/Properties/AssemblyInfo.cs @@ -5,11 +5,11 @@ using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("Clean Flash Player 34.0.0.175 Uninstaller")] +[assembly: AssemblyTitle("Clean Flash Player 34.0.0.184 Uninstaller")] [assembly: AssemblyDescription("The newest version of Flash Player, patched and ready to go beyond 2021.")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("FlashPatch Team")] -[assembly: AssemblyProduct("Clean Flash Player 34.0.0.175 Uninstaller")] +[assembly: AssemblyProduct("Clean Flash Player 34.0.0.184 Uninstaller")] [assembly: AssemblyCopyright("")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("34.0.0.175")] -[assembly: AssemblyFileVersion("34.0.0.175")] +[assembly: AssemblyVersion("34.0.0.184")] +[assembly: AssemblyFileVersion("34.0.0.184")] diff --git a/CleanFlashUninstaller/UninstallForm.cs b/CleanFlashUninstaller/UninstallForm.cs index 9423728..c7f133f 100644 --- a/CleanFlashUninstaller/UninstallForm.cs +++ b/CleanFlashUninstaller/UninstallForm.cs @@ -115,7 +115,7 @@ namespace CleanFlashUninstaller { private void completeLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { if (e.Link.Start == 212) { - Process.Start("https://www.basilisk-browser.org"); + Process.Start("https://waterfox.net"); } else { Process.Start("https://cleanflash.github.io"); }