Example #1
0
        private void UpdateProcess()
        {
            this.GetUpdateDetailsProcess();
            UpdateFileInfo[] ufis = _udm.GetUpdateFiles();
            DirectoryInfo    dir  = new DirectoryInfo(Path.Combine(Configure.DownloadsDirectory.FullName, "files"));

            foreach (UpdateFileInfo ufi in ufis)
            {
                string   zipFile = ufi.FileInfo + ".zip";
                FileInfo file    = new FileInfo(Path.Combine(dir.FullName, zipFile));
                file.Directory.Create();

                string url = Configure.CreateScriptDownloadFile(zipFile);

                UpdateManagerError error = _webReader.DownloadFileMethod(url, file);

                if (error != UpdateManagerError.None)
                {
                    throw (new WebReaderException(error, ""));
                }
            }
            _isDownloadUpdateFiles = true;

            DirectoryInfo newReleaseDirectory = new DirectoryInfo(Path.Combine(Configure.UpdateDirectory.FullName, "newrelease"));

            try {
                if (newReleaseDirectory.Exists)
                {
                    newReleaseDirectory.Delete(true);
                }
            } catch { }
            newReleaseDirectory.Create();

            Exception exError = null;

            _abort = false;
            foreach (UpdateFileInfo ufi in ufis)
            {
                if (ufi.Action == UpdateFileInfoAction.Deleted)
                {
                    continue;
                }

                FileInfo zipFile  = new FileInfo(Path.Combine(dir.FullName, ufi.FileInfo + ".zip"));
                FileInfo destFile = new FileInfo(Path.Combine(newReleaseDirectory.FullName, ufi.FileInfo));

                this.OnStartUnZipFile(new UnZipFileEventArgs(zipFile));
                try {
                    this.UnZipFile(zipFile, destFile);
                } catch (Exception e) {
                    exError = e;
                }
                this.OnStopUnZipFile(new UnZipFileEventArgs(zipFile));
                if (exError != null)
                {
                    break;
                }
            }
            if (exError != null)
            {
                throw (exError);
            }


            DirectoryInfo prevRelDir = Configure.PrevReleaseDirectory;

            try{
                if (prevRelDir.Exists)
                {
                    prevRelDir.Delete(true);
                }
            }catch {}

            /* Move old file */
            foreach (UpdateFileInfo ufi in ufis)
            {
                FileInfo sourceFile = new FileInfo(LURootFolder.Convert(ufi.FileInfo));
                FileInfo destFile   = new FileInfo(Path.Combine(prevRelDir.FullName, ufi.FileInfo));

                if (ufi.Action == UpdateFileInfoAction.Deleted)
                {
                    destFile = new FileInfo(destFile.FullName + ".upddeleted");
                }

                destFile.Directory.Create();

                File.Move(sourceFile.FullName, destFile.FullName);
            }

            /* Move new File*/
            foreach (UpdateFileInfo ufi in ufis)
            {
                if (ufi.Action == UpdateFileInfoAction.Deleted)
                {
                    return;
                }

                FileInfo sourceFile = new FileInfo(Path.Combine(newReleaseDirectory.FullName, ufi.FileInfo));
                FileInfo destFile   = new FileInfo(LURootFolder.Convert(ufi.FileInfo));
                File.Move(sourceFile.FullName, destFile.FullName);
            }

            try {
                newReleaseDirectory.Delete(true);
            } catch { }

            _udm.UpdateComplete();

            FileInfo fileVersionNumber = new FileInfo(Path.Combine(Configure.UpdateDirectory.FullName, Configure.VersionNumberFileName));

            if (fileVersionNumber.Exists)
            {
                fileVersionNumber.Delete();
            }
            File.WriteAllText(fileVersionNumber.FullName, _newVersionNumber.ToString());

            try {
                Configure.DownloadsDirectory.Delete(true);
            } catch { }

            _isUpdateComplete = true;
        }