Exemple #1
0
        internal static String CheckChangeLog(String executablePath, String culture, out WebException exception)
        {
            exception = null;

            WebClient webClient = null;
            String    fileContent;

            try
            {
                webClient   = ProxyUtil.InitWebClientProxy(executablePath, culture);
                fileContent = webClient.DownloadString(ProxyUtil.GetRepository() + "dtpad-changelog.log");
            }
            catch (WebException webException)
            {
                exception = webException;
                return(String.Empty);
            }
            finally
            {
                if (webClient != null)
                {
                    webClient.Dispose();
                }
            }

            return(fileContent);
        }
Exemple #2
0
        internal static bool IsUpdaterVersionUpdated(String executablePath, TextBox updateTextBox, String culture)
        {
            String    lastVersion;
            WebClient webClient  = ProxyUtil.InitWebClientProxy(executablePath, culture);
            String    repository = ProxyUtil.GetRepository();

            try
            {
                lastVersion = webClient.DownloadString(String.Format("{0}dtpadupdater-lastversion.log", repository));
            }
            catch (WebException)
            {
                updateTextBox.Text = updateTextBox.Text + LanguageUtil.GetCurrentLanguageString("ErrorCheckVersion", className, culture);
                updateTextBox.Text = updateTextBox.Text + Environment.NewLine + Environment.NewLine + String.Format(LanguageUtil.GetCurrentLanguageString("Proxy", className, culture), ConstantUtil.dtShortURL);
                return(false);
            }
            finally
            {
                webClient.Dispose();
            }

            if (AssemblyUtil.AssemblyVersion != lastVersion)
            {
                updateTextBox.Text = updateTextBox.Text + LanguageUtil.GetCurrentLanguageString("OldVersion", className, culture);
                return(false);
            }

            return(true);
        }
Exemple #3
0
        internal static bool UpdateProcess(Form1 form, String executablePath, TextBox updateTextBox, ProgressBar updateProgressBar, String culture, out String fromVersion, out String toVersion)
        {
            bool updateFounded = false;

            fromVersion = String.Empty;
            toVersion   = String.Empty;
            String updateBackupPath = Path.Combine(executablePath, "UpdateBackup");

            try
            {
                if (Directory.Exists(updateBackupPath))
                {
                    foreach (String fileAndPathName in Directory.GetFiles(updateBackupPath))
                    {
                        BeginReadOnlyCheck(fileAndPathName);
                    }
                    Directory.Delete(updateBackupPath, true);
                }
                updateTextBox.Text = LanguageUtil.GetCurrentLanguageString("Backup", className, culture);
                form.Refresh();

                Directory.CreateDirectory(updateBackupPath);
                foreach (String fileAndPathName in Directory.GetFiles(executablePath))
                {
                    String fileName = Path.GetFileName(fileAndPathName);

                    if (fileName != "DtPadUpdater.exe" && fileName != "log4net.dll" && fileName != "DtPadUpdater.pdb" && fileName != "DtPadUpdater.vshost.exe")
                    {
                        if (IsFileInUse(fileAndPathName))
                        {
                            throw new FileException(String.Format("{0}: {1}", LanguageUtil.GetCurrentLanguageString("FileInUse", className, culture), fileAndPathName));
                        }

                        File.Copy(fileName, Path.Combine(updateBackupPath, fileName));
                    }
                }
                updateProgressBar.PerformStep(); //1
                updateTextBox.Text = updateTextBox.Text + Environment.NewLine + LanguageUtil.GetCurrentLanguageString("Read", className, culture);

                WebClient webClient = ProxyUtil.InitWebClientProxy(executablePath, culture);

                fromVersion = AssemblyUtil.GetAssemblyVersion(updateBackupPath, "DtPad.exe");
                toVersion   = webClient.DownloadString(ProxyUtil.GetRepository() + "dtpad-lastversion.log");

                String   fileContent = webClient.DownloadString(ProxyUtil.GetRepository() + "dtpad-versioning.log");
                String[] split0      = fileContent.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
                foreach (String t in split0)
                {
                    if (t.StartsWith(ConstantUtil.commentStart))
                    {
                        continue; //Log comment row, the search continues from next log row
                    }

                    String[] split1 = t.Split(new[] { "§" }, StringSplitOptions.RemoveEmptyEntries);
                    String[] split2 = split1[0].Split(new[] { "-" }, StringSplitOptions.RemoveEmptyEntries);

                    if (split2[0] != fromVersion)
                    {
                        continue; //Log update row different from desiderd, the search continues from next log row
                    }

                    updateFounded = true;

                    updateTextBox.Text = updateTextBox.Text + Environment.NewLine + LanguageUtil.GetCurrentLanguageString("Update", className, culture);
                    form.Refresh();

                    String[] split3 = split1[1].Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries);

                    updateProgressBar.PerformStep(); //2

                    int remainingPBSteps = updateProgressBar.Maximum - updateProgressBar.Value;
                    updateProgressBar.Step = Convert.ToInt32(Math.Floor(Convert.ToDecimal(remainingPBSteps / split3.Length)));

                    foreach (String t1 in split3)
                    {
                        String[] split4 = t1.Split(new[] { "%" }, StringSplitOptions.RemoveEmptyEntries);

                        SwitchActions(form, split4[0], split4[1], executablePath, updateTextBox, webClient, culture);
                        updateProgressBar.PerformStep(); //n
                    }

                    form.Refresh();
                }

                webClient.Dispose();

                if (updateProgressBar.Value < updateProgressBar.Maximum)
                {
                    updateProgressBar.Value = updateProgressBar.Maximum;
                }

                if (updateFounded)
                {
                    updateTextBox.Text = updateTextBox.Text + Environment.NewLine + Environment.NewLine + LanguageUtil.GetCurrentLanguageString("Success", className, culture);
                    updateTextBox.Text = updateTextBox.Text + Environment.NewLine + Environment.NewLine + LanguageUtil.GetCurrentLanguageString("Launch", className, culture);
                }
                else
                {
                    updateTextBox.Text = updateTextBox.Text + Environment.NewLine + Environment.NewLine + LanguageUtil.GetCurrentLanguageString("NoInfo", className, culture);
                }
            }
            catch (Exception exception)
            {
                updateProgressBar.Value = 0;
                updateTextBox.Text      = updateTextBox.Text + Environment.NewLine + Environment.NewLine + LanguageUtil.GetCurrentLanguageString("Error", className, culture) + Environment.NewLine + Environment.NewLine + String.Format(LanguageUtil.GetCurrentLanguageString("Proxy", className, culture), ConstantUtil.dtShortURL);
                updateTextBox.Text      = updateTextBox.Text + Environment.NewLine + Environment.NewLine + LanguageUtil.GetCurrentLanguageString("Exception", className, culture) + " " + exception.Message;

                foreach (String fileAndPathName in Directory.GetFiles(updateBackupPath))
                {
                    String fileName = Path.GetFileName(fileAndPathName);
                    BeginReadOnlyCheck(Path.Combine(executablePath, fileName));
                    File.Delete(Path.Combine(executablePath, fileName));
                    File.Move(fileAndPathName, Path.Combine(executablePath, fileName));
                }

                return(false);
            }
            finally
            {
                if (Directory.Exists(updateBackupPath))
                {
                    foreach (String fileAndPathName in Directory.GetFiles(updateBackupPath))
                    {
                        BeginReadOnlyCheck(fileAndPathName);
                    }
                    Directory.Delete(updateBackupPath, true);
                }
            }

            return(true);
        }
Exemple #4
0
        private static void SwitchActions(Form1 form, String action, String value, String executablePath, Control updateTextBox, WebClient webClient, String culture)
        {
            String[] separator = { "!" };
            String[] valueSplit;
            bool     wasReadOnly;
            String   filename;
            String   repository = ProxyUtil.GetRepository();

            switch (action)
            {
            case "INS_FILE":
                updateTextBox.Text = updateTextBox.Text + Environment.NewLine + String.Format(LanguageUtil.GetCurrentLanguageString("INS_FILE", className, culture), value);
                webClient.DownloadFile(repository + "/dtpad-repository/" + value, Path.Combine(executablePath, value));
                FileUtil.SetFilePermissions(Path.Combine(executablePath, value));
                break;

            case "INS_KEY":
                valueSplit         = value.Split(separator, StringSplitOptions.RemoveEmptyEntries);
                updateTextBox.Text = updateTextBox.Text + Environment.NewLine + String.Format(LanguageUtil.GetCurrentLanguageString("INS_KEY", className, culture), valueSplit[0]);
                ConfigUtil.InsertParameter(valueSplit[0], valueSplit[1], executablePath);
                break;

            case "INS_DIR":
                updateTextBox.Text = updateTextBox.Text + Environment.NewLine + String.Format(LanguageUtil.GetCurrentLanguageString("INS_DIR", className, culture), value);
                Directory.CreateDirectory(Path.Combine(executablePath, value));
                FileUtil.SetDirPermissions(Path.Combine(executablePath, value));
                break;

            case "UPD_FILE":
                updateTextBox.Text = updateTextBox.Text + Environment.NewLine + String.Format(LanguageUtil.GetCurrentLanguageString("UPD_FILE", className, culture), value);
                filename           = Path.Combine(executablePath, value);
                wasReadOnly        = BeginReadOnlyCheck(filename);
                webClient.DownloadFile(repository + "/dtpad-repository/" + value, Path.Combine(executablePath, value));
                EndReadOnlyCheck(filename, wasReadOnly);
                FileUtil.SetFilePermissions(Path.Combine(executablePath, value));
                break;

            case "UPD_KEY":
                valueSplit = value.Split(separator, StringSplitOptions.RemoveEmptyEntries);
                String parameterValue = String.Empty;
                if (valueSplit.Length > 1)
                {
                    parameterValue = valueSplit[1];
                }
                updateTextBox.Text = updateTextBox.Text + Environment.NewLine + String.Format(LanguageUtil.GetCurrentLanguageString("UPD_KEY", className, culture), valueSplit[0]);
                ConfigUtil.UpdateParameter(valueSplit[0], parameterValue, executablePath);
                break;

            case "DEL_FILE":
                updateTextBox.Text = updateTextBox.Text + Environment.NewLine + String.Format(LanguageUtil.GetCurrentLanguageString("DEL_FILE", className, culture), value);
                filename           = Path.Combine(executablePath, value);
                BeginReadOnlyCheck(filename);
                File.Delete(filename);
                break;

            case "DEL_KEY":
                updateTextBox.Text = updateTextBox.Text + Environment.NewLine + String.Format(LanguageUtil.GetCurrentLanguageString("DEL_KEY", className, culture), value);
                ConfigUtil.DeleteParameter(value, executablePath);
                break;

            case "REN_FILE":
                valueSplit         = value.Split(separator, StringSplitOptions.RemoveEmptyEntries);
                updateTextBox.Text = updateTextBox.Text + Environment.NewLine + String.Format(LanguageUtil.GetCurrentLanguageString("REN_FILE", className, culture), valueSplit[0], valueSplit[1]);
                String originalFilename = Path.Combine(executablePath, valueSplit[0]);
                String modifiedFilename = Path.Combine(executablePath, valueSplit[1]);
                wasReadOnly = BeginReadOnlyCheck(originalFilename);
                File.Move(originalFilename, modifiedFilename);
                EndReadOnlyCheck(modifiedFilename, wasReadOnly);
                FileUtil.SetFilePermissions(Path.Combine(executablePath, value));
                break;

            case "REN_KEY":
                valueSplit         = value.Split(separator, StringSplitOptions.RemoveEmptyEntries);
                updateTextBox.Text = updateTextBox.Text + Environment.NewLine + String.Format(LanguageUtil.GetCurrentLanguageString("REN_KEY", className, culture), valueSplit[0], valueSplit[1]);
                ConfigUtil.RenameParameter(valueSplit[0], valueSplit[1], executablePath);
                break;

            case "SHW_MSG":
                String message = LanguageUtil.GetCurrentLanguageString(String.Format("SHW_MSG_{0}", value), className, culture);
                updateTextBox.Text = updateTextBox.Text + Environment.NewLine + message;
                WindowManager.ShowAlertProgramBox(form, message, culture);
                break;
            }
        }