Cómo implementar controles DevExpress durante la instalación
En mi marco de desarrollo Winform o marco de desarrollo WCF, se proporcionan una variedad de opciones de estilo de interfaz. Uno de ellos es el estilo de interfaz de control DevExpress con un mejor efecto de interfaz, pero generalmente lo usamos en el entorno de desarrollo. El tamaño del paquete de instalación es muy grande, más de 100 M, entonces, ¿cómo deberíamos implementarlo en la aplicación cliente?
Analizamos los parches especiales de DevExpress y descubrimos que son un archivo por lotes de DOS. Principalmente para crear el directorio correspondiente y luego copiar los tres archivos especiales de DevExpress al directorio correspondiente, para que se pueda lograr el uso normal de DevExpress. El contenido de ese archivo por lotes de DOS es el siguiente.
Generalmente, cuando implementamos aplicaciones cliente, crearemos un paquete de instalación. Solo necesitamos ejecutar estos comandos de DOS correctamente durante la operación de instalación personalizada.
Sin embargo, durante el proceso de instalación real, al ejecutar el archivo Register.bat, gacutil.exe utilizará el directorio del sistema como directorio de inicio, lo que provocará que la operación anterior falle y no se pueda acceder al directorio correspondiente. encontrado, porque no hay ningún archivo gacUtil en el directorio predeterminado del sistema y no hay tres archivos dll, como DevExpress.Data.v11.1.dll, para copiar. Entonces, ¿qué debemos hacer para ejecutar correctamente los comandos de DOS e implementar con éxito varios archivos dll especiales de DevExpress?
1. Primero, creamos un proyecto de instalación y agregamos el archivo de registro especial anterior al paquete de instalación. Luego modificamos el contenido del archivo Register.bat y agregamos una variable de ruta "{INSTALL_PATH}". variable de ruta Se reemplazará con el nombre de ruta específico durante la instalación. El archivo modificado se ve así.
Copiar código
@echo off
set path="{INSTALL_PATH}"
gacutil -u "{INSTALL_PATH}\DevExpress .Data.v11.1"
mkdir windir\assembly\GAC_MSIL\DevExpress.Data.v11.1\11.1.6.0__b88d1754d700e49a
copiar "{INSTALL_PATH}\DevExpress.Data. v11.1.dll" windir\assembly\GAC_MSIL\DevExpress.Data.v11.1\11.1.6.0__b88d1754d700e49a
gacutil -u "{INSTALL_PATH}\DevExpress.Utils.v11.1"
mkdir windir\assembly\GAC_MSIL\DevExpress.Utils.v11.1\11.1.6.0__b88d1754d700e49a
copia "{INSTALL_PATH}\DevExpress.Utils.v11.1.dll" windir\assembly\ GAC_MSIL\DevExpress.Utils.v11.1\11.1.6.0__b88d1754d700e49a
gacutil -u "{INSTALL_PATH}\DevExpress.CodeRush.Common"
mkdir windir\assembly\GAC_MSIL\DevExpress .Codeush.common \ 11.1.6.0__35C9F04B7764AA3D
Copiar "{Install_path} \ deVexpress.CODERUSH.common.dll" Windir \ GAC_MSIL \ vexpress.coderush.common \ 11.1.6.0__35C9F04B7764AA3D
copia REM "{INSTALL_PATH}\DevExpress.CodeRush.Common.dll" "C:\Program Files\DevExpress 2011.1\IDETools\System\DXCore\BIN\DevExpress.CodeRush.Common.dll"
si "[ProgramFiles(x86)]" == "[]" (copiar "{INSTALL_PATH}\DevExpress.CodeRush.Common.dll" "ProgramFiles\DevExpress 2011.1\IDETools\System\DXCore\BIN\DevExpress.CodeRush.Common .dll ") else (copiar "{INSTALL_PATH}\DevExpress.CodeRush.Common.dll" "ProgramFiles(x86)\DevExpress 2011.1\IDETools\System\DXCore\BIN\DevExpress.CodeRush.Common.dll")
2
, después de crear un paquete de instalación, agregue un proyecto de instalación personalizado, asígnele el nombre InstallerAction project y luego cree una "Clase de instalador" como se muestra a continuación
3) Luego modificamos el código de la "Clase de instalador", que cubre La función Instalar se utiliza principalmente para reemplazar la variable de ruta "{INSTALL_PATH}" del archivo por lotes Register.bat, como se muestra en el siguiente código
Copiar código
[RunInstaller( true )]
clase parcial pública InstallAction: Instalador
{
installAction pública()
{
InitializeComponent ();
}
anulación pública void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
p>try
{
string PhysicalRoot = this.Context.Parameters["targetdir"] // Instalar la ruta física
; try p>
{
//Al ejecutar el archivo Register.bat, gacutil.exe utilizará el directorio del sistema como directorio de inicio,
//Así que en el archivo Bat Establezca un parámetro y reemplácelo con un directorio específico durante la instalación
string Register = Path.Combine(physicalRoot, "Register.bat");
ReemplazoName(Register, " {INSTALL_PATH} ", raízfísica);
}
catch { }
cadena registroFile = Path.Combine(physicalRoot, "Register.bat");
RunDos(registerFile, "", false);
}
catch (Excepción ex)
{
WriteLog( ex.ToString());
}
}
/// resumengt;
/ Reemplace el nombre especificado en el script con un nuevo sustantivo antes de ejecutar el script
/// lt;/summarygt;
/// lt;param name="filePath"gt ;Nombre del archivo de scriptlt;/paramgt;
/// lt;param name="oldDBName"gt;Nombre originallt;/paramgt;
/// param name=" newDBName"gt; new namelt;/paramgt;
private void ReemplazarName(string filePath, string oldName, string newName)
{
if (newName.CompareTo (oldName) != 0)
{
string fileText = string.Empty;
usando (StreamReader streamReader = new StreamReader( filePath, Encoding.Default) )
{
fileText = streamReader.ReadToEnd();
fileText = fileText.Replace(oldName, newName);
p>}
usando (StreamWriter streamWriter = new StreamWriter(filePath, false, Encoding.Default))
{
streamWriter.Write(fileText ); p>
}
}
}
/// lt; resumengt;
/// Ejecutar archivos DOS en el fondo
/// lt;/summarygt;
/// lt;param name="fileName"gt;Nombre del archivo (incluida la ruta)lt;/paramgt p>
/// lt;param name="argument"gt;Ejecutando parámetroslt;/paramgt;
/// lt;param name="hidden"gt;Si se debe ocultar la ventana lt ;/paramgt;
runDos privado vacío (nombre de archivo de cadena, argumento de cadena, bool oculto)
{<
/p>
Proceso proceso = nuevo Proceso();
proceso.EnableRaisingEvents = falso
proceso.StartInfo.FileName = string.Format("\"{0} \"", fileName);
proceso.StartInfo.Arguments = argumento;
if (oculto)
{
proceso. StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
}
else
{
process.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
}
proceso.Inicio();
proceso.WaitForExit();
}
4. Luego, en la vista de instalación personalizada del paquete de instalación, asocie el proyecto de instalación personalizada que acaba de hacer al paquete de instalación, como se muestra a continuación.
Y modifique el elemento de atributo de salida principal de InstallAction como se muestra a continuación
5. Compile y ejecute el programa. Descubrimos que el efecto de la operación de DOS es el siguiente, lo que indica que DOS. El comando se ejecuta normalmente y copia el archivo.
6. Ejecute el programa. La interfaz de DevExpress aparece normalmente y no aparece ningún formulario adicional. Esto es lo que necesitamos.