Install an application

Asked

Viewed 70 times

2

What is the best and simplest way to create a customizable C installer#?

Ex arquivos:

\bin32\dedicated.exe
\bin32\server.exe
\bin32\sdk.exe
\etc\lib.def
\etc\resume32.def

Make the application do the installation for example of those files to a selected folder, showing progress.

2 answers

3


To make a dialogue with a ProgressBar do the following:

Start a class with the name you want, example:

public class ProgressoDeInstalacao : System.Windows.Forms.Form
{ /* ... */ }

Declare this variable with all the files you want to install:

string[] ArquivosParaInstalar = [@"\bin32\dedicated.exe", @"\bin32\sdk.exe", @"\etc\lib.def", @"\etc\resume32.def"];

Put this in the constructor method:

public ProgressoDeInstalacao()
{
  //até ai OK, crie uma variável com o total de itens:
  Int32 TotalDeItens = ArquivosParaInstalar.Count();

  //Suponha que você tem sua ProgressBar dentro dum diálogo, vamos chamar-la de "Processo"
  Processo.MaxValue = TotalDeItens; //altera o total de itens
  Processo.Value    = 0;            //reseta o valor dela

  this.Update(); //atualiza
}

Now let’s create a method called InstallFile where will install the file:

 void InstallFile(string Arquivo)
 {
     System.IO.File.Copy(Arquivo, @"C:\Arquivos de programas\<nome do seu app>\" + IO.Path.GetFilenameWithoutExtension(Arquivo) + IO.Path.GetExtension(Arquivo));
     /* Explicação:
        @"C:\Arquivos de programas\<nome do seu app>\" = é onde seus arquivos serão copiados
        IO.Path.GetFilenameWithoutExtension(Arquivo)   = é o nome do seu arquivo sem sua extensão e caminho
        IO.Path.GetExtension(Arquivo)                  = extensão do arquivo
      */ 
   }

now the worker:

   public void Trabalhar()
   {
      foreach (string arquivo in ArquivosParaInstalar)
      {
          Processo.Value += 1; //Aumenta o processo para 1 arquivo.
          Processo.Update();   //Opcional. É recomendado por isso para atualizar o ProgressBar.
          try {
             InstallFile(arquivo); //copia o arquivo para a pasta
          } catch ex { 
            System.Console.WriteLine(@"Erro: {0}", ex.Message) //Ocorreu um erro, no console vai mostrar por que.
          }
       }
    }

Now when you install the app, call with this simple line:

     ProgressoDeInstalacao dialogo = new ProgressoDeInstalacao()
     dialogo.Trabalhar(); //irá começar o trabalho

Hugs, if it doesn’t help, comments on the post.

0

There is a very simple software called Innosetup that does what you’re asking. It basically allows you to create a customizable Wizard by choosing the files that will be extracted as well as the executable of your program along with a ton of other options.

  • So but I want an app that I can customize it in the best way possible!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.