Пример #1
0
        //============================================================================
        //============================================================================
        private void doGetBuild()
        {
            if (mProcessCaller != null)
            {
                return;
            }

            //logList.Items.Clear();
            if (logList.Items.Count > 0)
            {
                log("");
            }

            if (buildListView.Items.Count == 0 || buildListView.SelectedIndices.Count == 0)
            {
                log("ERROR: No build selected.");
                return;
            }

            // Get the path to 7z.exe and make sure it exists
            string zipPath = zipFolderTextBox.Text;

            if (zipPath.Length > 0)
            {
                string c = zipPath.Substring(zipPath.Length - 1);
                if (c != @"\\")
                {
                    zipPath += @"\";
                }
            }
            bool zipExists = false;

            try
            {
                zipExists = File.Exists(zipPath + "7z.exe");
            }
            catch { }
            if (!zipExists)
            {
                log("ERROR: Can't find 7-Zip program.");
                return;
            }

            // Setup path to the build archive
            string buildFile = (String)mBuildFiles[buildListView.SelectedIndices[0]];

            if (buildFile == null)
            {
                log("ERROR: No build file selected.");
                return;
            }
            string buildPath = buildFolderTextBox.Text;

            if (buildPath.Length > 0)
            {
                string c = buildPath.Substring(buildPath.Length - 1);
                if (c != @"\\")
                {
                    buildPath += @"\";
                }
            }

            // Setup the local path
            string localPath = localFolderTextBox.Text;

            if (localPath.Length == 0)
            {
                log("ERROR: No local folder specified.");
                return;
            }
            else
            {
                string c = localPath.Substring(localPath.Length - 1);
                if (c != @"\\")
                {
                    localPath += @"\";
                }
            }

            goButton.Enabled     = false;
            cancelButton.Enabled = true;
            this.Cursor          = Cursors.AppStarting;
            log("Getting build " + buildFile + "...");

            lastBuildTextBox.Text = buildFile;

            // Clear out the local folder
            if (deleteFilesCheckBox.Checked)
            {
                deleteLocalFiles(localPath);
            }

            // Run 7z to decompress the build
            mBatchProcess                  = false;
            mProcessCaller                 = new ProcessCaller(this);
            mProcessCaller.FileName        = zipPath + @"7z.exe";
            mProcessCaller.Arguments       = @"x " + buildPath + buildFile + @" -y -o" + localPath;
            mProcessCaller.StdErrReceived += new DataReceivedHandler(writeProcessOutput);
            mProcessCaller.StdOutReceived += new DataReceivedHandler(writeProcessOutput);
            mProcessCaller.Completed      += new EventHandler(processCompleted);
            mProcessCaller.Cancelled      += new EventHandler(processCanceled);
            //mProcessCaller.Failed += no event handler for this one, yet.
            mProcessCaller.Start();
            //mProcess = new Process();
            //mProcess.StartInfo.FileName = zipPath + @"7z.exe";
            //mProcess.StartInfo.Arguments = @"x " + buildPath + buildFile + @" -y -o" + localPath;
            //mProcess.StartInfo.UseShellExecute = false;
            //mProcess.Start();
        }