Install an application

2

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

Ex files:

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

Have the application install, for example, these files to a selected folder, showing progress.

    
asked by anonymous 12.07.2015 / 01:53

2 answers

3

To do a dialog with a ProgressBar do the following:

Start a class with the name you want, for 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 you 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 application, call with this simple line:

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

Hugs, if it does not help, comments in the post.

    
12.07.2015 / 19:12
0

There is very simple software called InnoSetup that does what you are asking for. 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.

    
12.07.2015 / 17:27