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; }