Esempio n. 1
0
        public bool generarScriptInstalador(Entorno e)
        {
            string pathImplementacion = PerfilUtilizado.rutaImplementacion();
            string pathVersionador = PerfilUtilizado.proyectoSegunVersionador() + "\\" + PerfilUtilizado.rutaVersionadorImplementacion();
            string miPath = System.IO.Path.Combine(carpeta, "Instalador");
            string prefijo = "E"; if (tipoDelProyecto == tipoProyecto.Correctivo) prefijo = "C";

            string nombreInstalador;
            if(!e.getProductivo())
                nombreInstalador = "instalador_" + prefijo + codigo + "_" + e.Nombre() + ".sh";
            else
                nombreInstalador = "instalador_" + prefijo + codigo + ".sh";
            string nombreTar = "fuentes_" + prefijo + codigo + ".tar";
            string nombreMigracion = "migracion_" + prefijo + codigo + ".html";

            string archivoTar = System.IO.Path.Combine(miPath, nombreTar);
            string archivoInstalador = System.IO.Path.Combine(miPath, nombreInstalador);
            string archivoMigracion = System.IO.Path.Combine(miPath, nombreMigracion);

            FileInfo f = new FileInfo(archivoTar);

            /* Instalador */
            try
            {
                string pathTemplateInstalador = PerfilUtilizado.getTemplateInstalador(e);
                /* Directorios */
                StringBuilder directoriosCreacion = new StringBuilder();
                for (int i = 0; i < vectorDirectorios.Count; i++)
                {
                    string dirRuta = vectorDirectorios[i].ruta;
                    string dirOwner = vectorDirectorios[i].owner;
                    string dirGrupo = vectorDirectorios[i].grupo;
                    string dirPermisos = vectorDirectorios[i].permisos;
                    if (!e.getProductivo())
                    {
                        dirOwner = e.getUsuarioMapeado(dirOwner);
                        dirGrupo = e.getGrupoMapeado(dirGrupo);
                        dirRuta = e.getDirectorioMapeado(dirRuta);
                    }
                    directoriosCreacion.Append("	CrearDirectorio " + dirRuta + " " + dirOwner + " " + dirGrupo + " " + dirPermisos + '\n');

                }
                /* Archivos */
                StringBuilder archivosCreacion = new StringBuilder();
                for (int i = 0; i < vectorArchivos.Count; i++)
                {
                    string archRuta = vectorArchivos[i].ruta;
                    string archRutaDestino = archRuta;
                    string archOwner = vectorArchivos[i].owner;
                    string archGrupo = vectorArchivos[i].grupo;
                    string archPermisos = vectorArchivos[i].permisos;
                    if (!e.getProductivo())
                    {
                        archOwner = e.getUsuarioMapeado(archOwner);
                        archGrupo = e.getGrupoMapeado(archGrupo);
                        archRutaDestino = e.getDirectorioMapeado(archRutaDestino);
                    }
                    archivosCreacion.Append("CopiarArchivo " + pathImplementacion + prefijo + codigo + archRuta + " " + archRutaDestino + " " + archOwner + " " + archGrupo + " " + archPermisos + " ${ROLLBACK}" + '\n');
                }
                /* Ejecutables */
                StringBuilder ejecutablesPermisos = new StringBuilder();
                StringBuilder ejecutablesCreacion = new StringBuilder();
                for (int i = 0; i < vectorEjecutables.Count; i++)
                {
                    ejecutablesPermisos.Append("PermisosEjecutable " + pathImplementacion + prefijo + codigo + "/" + vectorEjecutables[i].ruta + '\n');
                    if (vectorEjecutables[i].ruta.Substring(vectorEjecutables[i].ruta.Length - 3, 3) == ".sh")
                        ejecutablesCreacion.Append("EjecutarScript " + pathImplementacion + prefijo + codigo + "/" + vectorEjecutables[i].ruta + '\n');
                }

                TextReader leerTemplate = new StreamReader(pathTemplateInstalador);
                string template = leerTemplate.ReadToEnd();
                leerTemplate.Close();

                if (tipoDelProyecto == tipoProyecto.Evolutivo)
                    template = template.Replace("*-*-*TIPO*-*-*", "evolutivo");
                else if (tipoDelProyecto == tipoProyecto.Correctivo)
                    template = template.Replace("*-*-*TIPO*-*-*", "correctivo");

                template = template.Replace("*-*-*CODIGO*-*-*", prefijo + codigo);
                template = template.Replace("*-*-*TAR*-*-*", nombreTar);
                template = template.Replace("*-*-*TARSIZE*-*-*", f.Length.ToString());
                template = template.Replace("*-*-*INSTALADOR*-*-*", nombreInstalador);
                template = template.Replace("*-*-*DESCRIPCION*-*-*", descripcion);
                template = template.Replace("*-*-*COPIADIRECTORIOS*-*-*", directoriosCreacion.ToString());
                template = template.Replace("*-*-*COPIAARCHIVOS*-*-*", archivosCreacion.ToString());
                template = template.Replace("*-*-*PERMISOSSCRIPTS*-*-*", ejecutablesPermisos.ToString());
                template = template.Replace("*-*-*EJECUCIONSCRIPTS*-*-*", ejecutablesCreacion.ToString());
                template = template.Replace("*-*-*RUTAIMPLEMENTACION*-*-*", pathImplementacion);
                template = template.Replace("*-*-*RUTAVERSIONADOR*-*-*", pathVersionador);

                cambiarPermisos(archivoInstalador);

                StreamWriter escribirScript = new StreamWriter(archivoInstalador);
                escribirScript.Write(template);
                escribirScript.Close();

            }
            catch (Exception ex)
            { Logeador.Instance.log("Error intentando crear el script instalador: " + ex.Message); return false; }
            return true;
        }