Esempio n. 1
0
        //Estou considerando que o pacote .zip é um pacote com dlls
        private void updateDLLs()
        {
            try
            {
                //pkg do arquivo zip
                var pkg = this._pacote.Anexos.FirstOrDefault();

                //nome do arquivo zip
                string zipResource = pkg.FileName;

                //extraindo atualização
                taskLog("Iniciando atualização: " + zipResource);

                if (Directory.Exists(_resourceDir))
                {
                    zipResource = _resourceDir;
                }
                else
                {
                    //raiz da instalação
                    var raiz = Path.GetPathRoot(_installDir);

                    //garante que o root de instalação e atualização sejam são iguais
                    //a atualização sera extraida no mesmo o root "=> Volume do disco Ex: C:
                    //Deve ser o mesmo root onde esta a instalação do programa
                    string resourceDir = Path.Combine(Path.GetPathRoot(raiz), "ite_package_update_" + Guid.NewGuid());

                    //cria o temporario para receber a atualização
                    FileManagerIts.CreateDirectory(resourceDir);

                    //agora eu tenho um diretorio entao gere um arquivo .zip
                    zipResource = resourceDir + "\\" + zipResource;

                    //gera o zip em disco
                    FileManagerIts.WriteBytesToFile(zipResource, pkg.DataFile);

                    //extrai as atualizações pra um temporario
                    ZipUtil.ExtractToDirectory(zipResource, resourceDir);
                }

                taskLog("Salvando instalação atual ...");
                //garante que exista somente um .bak
                FileManagerIts.DeleteDirectory(_installDir + ".bak");

                //faz a copia o da instalaçao atual
                FileManagerIts.DirectoryCopy(_installDir, _installDir + ".bak");

                taskLog("Diretório pronto para receber atualização ...");

                taskLog("Atualizando diretórios e dlls ... ");

                Task.Run(new Action(() =>
                {
                    foreach (var f in new FileManagerIts().ToFilesRecursive(_resourceDir))
                    {
                        //vo mostrar so o nome o temporario q gerei nao eh importante
                        taskLog("Atualizando: " + Path.GetFileName(f));
                    }
                }));

                //ilustrar dps
                _taskManager.UpdateSoftware(_resourceDir, _installDir);

                //apague o temporário
                FileManagerIts.DeleteDirectory(_resourceDir);
            }
            catch (Exception ex)
            {
                try
                {
                    cancelation();

                    taskLog("Falha no pacote de atualizações");
                    taskLog(ex.Message);
                    LoggerUtilIts.ShowExceptionLogs(ex, this);
                }

                catch (OperationCanceledException oc)
                {
                    Console.WriteLine("Operação cancelada=> " + oc.Message);
                }
            }
        }
Esempio n. 2
0
 //PQP consegui
 /// <summary>
 /// Copia todo conteúdo do diretório para outro
 /// </summary>
 /// <param name="source"></param>
 /// <param name="tarjet"></param>
 public void UpdateSoftware(string source, string tarjet)
 {
     //encapsulado pro ITE
     FileManagerIts.DirectoryCopy(source, tarjet);
 }