Ejemplo n.º 1
0
        private void CopiarImagenes()
        {
            this.Procesando = true;

            int iErrores = 0;

            this.pgbActualizacion.Value   = 0;
            this.pgbActualizacion.Maximum = this.lsvArchivos.Items.Count;
            foreach (ListViewItem oItem in this.lsvArchivos.Items)
            {
                string sArchivo      = oItem.SubItems[0].Text;
                string sRutaRelativa = sArchivo.Replace(Inicio.RutaAct, "");

                // Se intenta hacer la copia
                try
                {
                    File.Copy(sArchivo, (this.RutaImgLocal + sRutaRelativa), true);
                    oItem.SubItems.Add("Copiado");
                    oItem.ForeColor = Color.Green;
                }
                catch (Exception ex)
                {
                    oItem.SubItems.Add("Error");
                    oItem.SubItems.Add(ex.Message);
                    oItem.ForeColor = Color.Red;
                    iErrores++;
                }

                this.pgbActualizacion.PerformStep();
                Application.DoEvents();
            }

            if (iErrores > 0)
            {
                this.btnAccion.Text = "Reintentar";
            }
            else
            {
                // Se guarda el dato de la última actualización
                UtilLocal.GuardarValorArchivoParametros((this.RutaImgLocal + ActImagenes.ArchivoUltimaActualizacion)
                                                        , ActImagenes.ParametroUltimaActualizacion, DateTime.Now.ToString());
            }

            this.Procesando = false;
        }
Ejemplo n.º 2
0
        public static void GuardarValorArchivoParametros(string sArchivo, string sParametro, string sValor)
        {
            var oParametros = UtilLocal.LeerArchivoParametros(sArchivo);

            if (oParametros == null)
            {
                oParametros = new Dictionary <string, string>();
            }
            oParametros[sParametro] = sValor;
            // Se forman las líneas
            var oLineas = new List <string>();

            foreach (var oReg in oParametros)
            {
                oLineas.Add(oReg.Key + "=" + oReg.Value);
            }
            // Se escriben todos los datos
            File.WriteAllLines(sArchivo, oLineas);
        }
Ejemplo n.º 3
0
        static void Main(string[] aArgumentos)
        {
            // Se procesan los parámetros
            var oArgs = UtilLocal.ProcesarArgumentos(aArgumentos);

            if (oArgs.ContainsKey("h"))
            {
                string sAyuda = @"
                        Programa utilizado para actualizar la aplicación Theos

                        Parámetros:
                        -h: Mostrar esta ventana de ayuda
                        -t: Tipo de apertura
                            ap: Actualizar aplicación Theos
                            img: Actualizar imágenes
                        -r: Ruta donde se encuentran los archivos de actualización, tanto de 'ap' como de 'img'
                        -exe: Nombre del archivo ejecutable de Theos
                    ";
                MessageBox.Show(sAyuda, "Ayuda", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            // Se verifican los parámetros
            if (!oArgs.ContainsKey("t") || !oArgs.ContainsKey("r"))
            {
                MessageBox.Show("No se ha especificado la ruta de la Actualización.", "Parámetros incorrectos", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            string sTipoAc = oArgs["t"].ToLower();

            // Se corrige un caso extraño que se da al obtener el argumento
            if (oArgs["r"].EndsWith("\""))
            {
                oArgs["r"] = oArgs["r"].Substring(0, oArgs["r"].Length - 1);
            }
            Inicio.RutaAct = UtilLocal.AgregarSeparadorDeCarpeta(oArgs["r"]);

            Inicio.RutaLocal = UtilLocal.AgregarSeparadorDeCarpeta(Directory.GetCurrentDirectory());
            // Inicio.RutaLocal = @"C:\tmp\CR\Ejec\";  // Para pruebas
            Inicio.Ejecutable = (oArgs.ContainsKey("exe") ? oArgs["exe"] : "THEOS.exe");

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // Se ejecuta la acción, según el parámetros específicado
            if (sTipoAc == "ap")
            {
                Application.Run(new Principal());

                // Se intenta abrir la aplicación principal (Theos)
                if (Inicio.ActualizacionCorrecta)
                {
                    Process.Start(Inicio.RutaLocal + Inicio.Ejecutable);
                }
            }
            else
            {
                // Se obtiene la ruta local de las imágenes
                string sConfig = (Inicio.Ejecutable + ".config");
                if (!File.Exists(sConfig))
                {
                    UtilLocal.MensajeError("Error al abrir el archivo de configuración.", "Error");
                    return;
                }

                string sRutaImg = UtilLocal.ObtenerValorDeXml(sConfig, "//configuration/applicationSettings/Refaccionaria.App.Properties.Settings/setting[@name='RutaImagenes']");
                if (sRutaImg == null)
                {
                    UtilLocal.MensajeError("Error al acceder al parámetro de 'RutaImagenes' del archivo de configuración.", "Error");
                    return;
                }
                sRutaImg = UtilLocal.AgregarSeparadorDeCarpeta(sRutaImg);

                // sRutaImg = new System.Configuration.AppSettingsReader().GetValue("RutaImagenes", typeof(string)).ToString();
                var frmActImg = new ActImagenes()
                {
                    RutaImgLocal = sRutaImg
                };
                Application.Run(frmActImg);
            }
        }
Ejemplo n.º 4
0
        private void ObtenerDiferencias()
        {
            this.Procesando         = true;
            this.lblMensaje.Visible = true;

            // Se obtiene la fecha de la última actualización
            DateTime dUltAct = DateTime.MinValue;

            if (File.Exists(this.RutaImgLocal + ActImagenes.ArchivoUltimaActualizacion))
            {
                var aInfo = UtilLocal.LeerArchivoParametros(this.RutaImgLocal + ActImagenes.ArchivoUltimaActualizacion);
                if (aInfo.ContainsKey(ActImagenes.ParametroUltimaActualizacion))
                {
                    dUltAct = UtilLocal.FechaHora(aInfo[ActImagenes.ParametroUltimaActualizacion]);
                }
            }

            // var oDiferencias = new List<string>();
            // var oImgAct = new DirectoryInfo(Inicio.RutaAct).GetFiles().Where(c => c.Extension == "jpg" && (c.CreationTime > dUltAct || c.LastWriteTime > dUltAct));
            // var aImgLoc = Directory.GetFiles(this.RutaImgLocal);

            // var oImgAct = new DirectoryInfo(Inicio.RutaAct).GetFiles();
            // var oImgLoc = new DirectoryInfo(this.RutaImgLocal).GetFiles();

            /* this.pgbActualizacion.Maximum = aImgAct.Length;
             *
             * string sLocal = "";
             * foreach (string sActual in aImgAct)
             * {
             *  if (aImgLoc.Contains(this.RutaImgLocal + Path.GetFileName(sActual)))
             *  {
             *      sLocal = aImgLoc.First(c => c == (this.RutaImgLocal + Path.GetFileName(sActual)));
             *  }
             *  else
             *  {
             *      oDiferencias.Add(sActual);
             *      this.pgbActualizacion.PerformStep();
             *      continue;
             *  }
             *
             *  if (File.OpenRead(sLocal).Length != File.OpenRead(sActual).Length)
             *      oDiferencias.Add(sActual);
             *
             *  this.pgbActualizacion.PerformStep();
             *  Application.DoEvents();
             * }
             *
             * // Se listan las diferencias
             * foreach (string sImagen in oDiferencias)
             *  this.lsvArchivos.Items.Add(sImagen);
             */

            // Nueva forma
            Application.DoEvents();
            var oDiferencias = new DirectoryInfo(Inicio.RutaAct).GetFiles("*.jpg").Where(c => (c.CreationTime > dUltAct || c.LastWriteTime > dUltAct)).ToList();

            this.pgbActualizacion.Maximum = oDiferencias.Count;
            // Se listan las diferencias
            foreach (var oReg in oDiferencias)
            {
                this.lsvArchivos.Items.Add(oReg.FullName);
                this.pgbActualizacion.PerformStep();
                Application.DoEvents();
            }

            //
            this.lblMensaje.Visible = false;

            // Se comienzan a copiar los archivos necesarios
            this.CopiarImagenes();

            this.Procesando = false;
        }