Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

ptrci

A tentar criar minha primeira aplicação windows

Recommended Posts

ptrci

Estou a tentar fazer a minha primeira aplicação windows em C#.

Estou a construir o meu próprio Service pack para windows xp e vista.

Estou a tentar criar uma barra de progresso. Para mostrar o progresso de instalação das actualizações e outros.

Ou seja a aplicação vai correr esta listagem em comandos de sistema:

894391.exe /quiet /norestart
896358.exe /quiet /norestart
896422.exe /quiet /norestart
896423.exe /quiet /norestart
896424.exe /quiet /norestart
896428.exe /quiet /norestart
898461.exe /quiet /norestart
899587.exe /quiet /norestart
899588.exe /quiet /norestart
899591.exe /quiet /norestart
900725.exe /quiet /norestart

Nota: a listagem não esta completa.

Eu queira que a barra de progressos começa em zero no primeiro comando e acabasse no ultimo comando.

Estou a usar o:  Microsoft Visual C# 2005 Express Edition

Share this post


Link to post
Share on other sites
Nazgulled

Pegas no valor 100, divides pelo numero de comandos e vais incrementado esse valor na progress bar no fim de cada comando...

Share this post


Link to post
Share on other sites
ptrci

Tenho uma duvida, já estive a procura na net, mas não obtive resposta.

No StartInfo, é possível o WorkingDirectory não ter o caminho completo para o ficheiro a ser executado.

O esquema é este

Aplicação a correr

|

| - Windows_Vista

|      |

|      | -- Ficheiros a executar

Queria chegar aos ficheiros a executar. queira isto porque vou correr a aplicação no dvd e a unidade de dvd muda de computador a computador.

Esta aqui o código que estou a usar para executar processos:

               #region processos de Intalação SP1
                System.Diagnostics.Process proc = new System.Diagnostics.Process();

                {
                    try
                    {
                        KB_text.Text = "Windows6.0_KB938194_x86";
                        Ficheiro_text.Text = "938194_x86.msu";
                        info_text.Text = "This update resolves a number of individual issues which may be affecting some computers running Windows Vista. These issues have been reported by customers using the Error Reporting service, product support, or other means. Installing this update will improve the reliability and hardware compatibility of Windows Vista in a variety of scenarios.";
                        Data_text.Text = "2007-07-29";
                        System.Threading.Thread.Sleep(5000);
                        proc.EnableRaisingEvents = false;
                        proc.StartInfo.UseShellExecute = false;
                        proc.StartInfo.RedirectStandardOutput = true;
                        proc.StartInfo.CreateNoWindow = false;
                        proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; //Esconde a Janela
                        proc.StartInfo.WorkingDirectory = "\\\\windows_vista\\";
                        proc.StartInfo.FileName = "938194_x86.msu";
                        proc.StartInfo.Arguments = "/quiet /norestart";
                        proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
                        proc.Start();            //Inicia o processo
                        proc.WaitForExit();      //Aguarda até acabar o processo
                        proc.Close();            //fecha o processo
                        progressBar1.Value += 1; //Barra de Progressos
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Erro na actualização deste ficheiro: " + ex);
                        MessageBox.Show("Não cancele a actualização. A instalação vai continuar");
                    }
                }

Share this post


Link to post
Share on other sites
Saco

Como tens a directoria windows_vista na mesma pasta do programa, o caminho correcto é windows_vista\ e não \\windows_vista\

Com \\windows_vista\ o que ias fazer era procurar por um computador na rede chamado windows_vista em vez de uma directoria dentro da directoria actual

proc.StartInfo.WorkingDirectory = @"windows_vista\"; // Se usares uma @ antes de uma string, a string é interpretada literalmente, sem caracteres de escape

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.