2011-08-29 24 views
7

Tenemos una aplicación ASP.NET 2.0 que está disponible como descarga de prueba. Como tal, no tenemos control sobre el entorno en el que se instalará. A pesar de todos nuestros esfuerzos para producir un instalador confiable, todavía tenemos muchos usuarios que reportan problemas.¿Cuáles son los requisitos previos para instalar una aplicación ASP.NET?

Generamos archivos .NET compilados utilizando un proyecto de despliegue web. Luego tomamos el resultado y lo ejecutamos a través de un Proyecto de Implementación VS 2010 para generar un instalador msi.

Éstos son sólo un par de los problemas que encontramos:

  • Parece que el instalador MSI no funciona bien con IIS7. En para que se instale correctamente, se debe instalar la compatibilidad IIS6 con , de lo contrario, simplemente falla sin error.
  • Aunque "RemovePreviousVersions" está establecido en true, el instalador casi nunca desinstala la versión anterior y solo arroja un error que indica que la aplicación ya está instalada.

Hemos intentado anteriormente utilizar un instalador InnoSetup. Funcionó en cierta medida, pero tuvimos problemas con la aplicación instalada que se conectaba al grupo de aplicaciones incorrecto y nunca encontramos una manera de definir el grupo de aplicaciones a través del script InnoSetup.

¿Alguien puede darme una lista definitiva de lo que necesita para poner en marcha una aplicación ASP.NET en una máquina con Windows XP o posterior que tiene una configuración desconocida? p.ej. check .NET 2.0 está instalado, check II6 está instalado, copia archivos en x, crea un directorio virtual, etc.

Mejor aún, ¿alguien sabe de un instalador (o extensión InnoSetup) que hace la mayor parte de la configuración por ti?

+2

Buena suerte. Intentamos crear un instalador para instalar IIS, la aplicación web y SQL Server Express. Tuvimos que envolver varios instaladores en un gran instalador. Luego tuvimos que crear múltiples instaladores para versiones de 32 bits y 64 bits; luego para XP y Windows 7, y así sucesivamente. Nunca funcionó en suficientes entornos. :(Finalmente nos dimos por vencidos e hicimos una imagen del sistema para una configuración de hardware que vendimos con el producto (con licencias del sistema operativo y todo); el producto se vendió lo suficiente como para que valiera la pena. –

+1

re: RemovePreviousVersions ... The La propiedad 'RemovePreviousVersions' ha cambiado desde 2008 en adelante. Ya no elimina la versión anterior (¡como su nombre lo implica!) Hace una variante assemblyversion y solo reemplaza archivos que difieren. Por lo tanto, si tiene un ensamblado diferente (md5sum) con la misma versión número que no lo reemplaza. Echa un vistazo a este enlace http://stackoverflow.com/questions/4210294/visual-studio-2010-removepreviousverssions necesitas ejecutar un script corto en tu MSI para arreglarlo. – wal

Respuesta

0

Después de revisar todas las opciones que decidí mantener el instalador MSI, además de añadir las comprobaciones de requisitos previos en la secuencia de comandos inno setup

Aquí está la secuencia de comandos

procedure DialogInfo(const Msg: String); 
begin 
    MsgBox(Msg , mbInformation, mb_OK); 
end; 

function IISInstalled: Boolean; 
begin 
    Result := RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\InetStp'); 
end; 

function GetIISMajorVersion: Integer; 
var 
    Vers: Cardinal; 
begin 
    if (IISInstalled) and 
    (RegQueryDWordValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\InetStp', 'MajorVersion', Vers)) then 
    Result := Vers 
    else 
    Result :=0;  
end; 

function IISManagementConsoleInstalled: Boolean; 
var 
    IIS: Variant; 
begin 
    try 
    IIS := CreateOleObject('IISNamespace'); 

    Result := TRUE; 
    except 
    Result := FALSE; 
    end; 
end; 

function WindowsMinorVersion: Integer; 
var 
    Version: TWindowsVersion; 
begin 
    GetWindowsVersionEx(Version); 

    Result := Version.Minor; 
end; 

function WindowsMajorVersion: Integer; 
var 
    Version: TWindowsVersion; 
begin 
    GetWindowsVersionEx(Version); 

    Result := Version.Major; 
end; 

function WindowsServer: Boolean; 
var 
    Version: TWindowsVersion; 
begin 
    GetWindowsVersionEx(Version); 

    Result := Version.ProductType = VER_NT_SERVER; 
end; 

function IsWindows7: Boolean; 
begin 
    Result := (WindowsMajorVersion = 6) and (WindowsMinorVersion = 1) and (not WindowsServer); 
end; 

function IsWindowsVista: Boolean; 
begin 
    Result := (WindowsMajorVersion = 6) and (WindowsMinorVersion = 0) and (not WindowsServer); 
end; 

function IsWindowsXP: Boolean; 
begin 
    Result := (WindowsMajorVersion = 5) and (WindowsMinorVersion = 1) and (not WindowsServer); 
end; 

function IsWinServer2003: Boolean; 
begin 
    Result := (WindowsMajorVersion = 5) and (WindowsMinorVersion = 2) and (WindowsServer); 
end; 

function IsWinServer2008: Boolean; 
begin 
    Result := (WindowsMajorVersion = 6) and ((WindowsMinorVersion = 0) or (WindowsMinorVersion = 1)) and (WindowsServer); 
end; 

function IsHomeEdition: Boolean; 
var 
    Version: TWindowsVersion; 
begin 
    GetWindowsVersionEx(Version); 

    Result := Version.SuiteMask AND VER_SUITE_PERSONAL <> 0 ; 
end; 

function CheckIISPrerequisites: Boolean; 
var 
    IISVersion: Integer; 
    Msg: String; 
begin 
    Result := FALSE; 

    case GetIISMajorVersion of 
    0: 
     begin 
     if IsHomeEdition then 
      Msg := 'The Easy-IP Web Server requires Internet Information Services (IIS). IIS cannot be installed on the Home edition of Windows.' 
     else 
     begin  
      Msg := 'The Easy-IP Web Server requires Internet Information Services to be enabled on this machine. To enable IIS: ' +#10 + #10; 

      if IsWindowsXP then 
      Msg := Msg + '1) Open Control Panel then Add or Remove Programs.' + #10 + 
         '2) Click on Add/Remove Windows Components.' + #10 + 
         '3) Find Internet Information Services (IIS) amd check it.' + #10 + 
         '4) Click Next then Finish.' else 

      if IsWinServer2003 then 
      Msg := Msg + '1) Open Manage Your Server' + #10 + 
         '2) Click on Add or Remove a Role.' + #10 + 
         '3) Click Next.' + #10 + 
         '4) Select Application server (IIS, ASP.NET)' + #10 + 
         '5) Click Next.' + #10 + 
         '6) Check Enable ASP.NET.' + #10 + 
         '7) Click Next, then Next again.' else 

      if IsWinServer2008 then 
      Msg := Msg + '1) Open Server Manager.' + #10 + 
         '2) Click on Roles.' + #10 + 
         '3) Click Add Roles.' + #10 + 
         '4) When the Wizard appears, click Next.' + #10 + 
         '5) Find Web Server(IIS) and check it.' + #10 + 
         '6) Click Next twice.' + #10 + 
         '7) Find Application Development and check it.' + #10 + 
         '8) Find IIS 6 Management Compatibility (under Management Tools) and check it along with all it''s children.' + #10 + 
         '9) Click Next, then Install.' 
      else   

      // Vista, Win7 or later 
      Msg := Msg + '1) Open Control Panel then Programs and Features.' + #10 + 
         '2) Click on Turn Windows Features on or off.' + #10 + 
         '3) Check Internet Information Services.' + #10 + 
         '4) Under the Internet Information Services node, expand Web Management Tools and check IIS Management Console.' + #10 + 
         '5) Click OK.'; 
     end; 
     end; 

    5, 6: 
     begin 
     Result := IISManagementConsoleInstalled; 

     if not Result then 
      Msg := 'Unable to install the Easy-IP Web Server as the IIS Management Console could not be initiated. Please contact [email protected] for more information.'; 
     end; 

    7: 
     begin 
     Result := IISManagementConsoleInstalled; 

     if not Result then 
     begin 
      Msg := 'Internet Information Services is installed, but in order to install the Easy-IP Web Server, you must also enable the IIS Management Console. To enable the IIS Management Console:' + #10 + #10; 

      if WindowsServer then 
      Msg := Msg + '1) Open Server Manager and click on Roles.' + #10 + 
         '2) Under Web Server (IIS), click Add Role Services.' + #10 + 
         '3) Find Application Development and make sure it''s checked.' + #10 + 
         '4) Find IIS 6 Management Compatibility (under Management Tools) and check it along with all it''s children.' + #10 + 
         '5) Click Next, then Install.' 
      else 
      Msg := Msg + '1) Open Control Panel then Programs and Features.' + #10 + 
         '2) Click on Turn Windows Features on or off.' + #10 + 
         '3) Under the Internet Information Services node, expand Web Management Tools then check IIS Management Console.' + #10 + 
         '4) Click OK.'; 
     end; 
     end; 
    end; // of case 

    if not Result then 
    DialogInfo(Msg); 
end; 
0

Puede usar Installshield para desarrollar el instalador según sus requisitos. Tiene todas las funciones que permiten crear y eliminar directorios virtuales según IIS, copiar datos en el sistema de destino, validar el sistema operativo, etc.

0

Si usa archivos .dlls externos (ensamblados), entonces debe implementarlos también. Por ejemplo: si una aplicación utiliza informes de Crystal (CR), entonces el paquete de tiempo de ejecución de CR debe estar instalado en la máquina de producción. También asegúrese de que todos sus archivos se hayan importado a su proyecto y su aplicación no busque sus archivos en su máquina local (fuera del directorio de su proyecto).

2

Para implementar la versión en el servidor de desarrollo o producción, siga los siguientes pasos.

  1. Instalar Web Deployment MSI.
  2. Haga clic derecho en su proyecto en el explorador de soluciones y agregue el proyecto de implementación web (Aquí no estoy usando convertir a aplicación web o publicación)
  3. Luego compile los archivos. Esto creará una carpeta en su directorio de proyecto que contendrá los archivos necesarios para implementar en el servidor.
  4. Tome la copia de seguridad de su directorio virtual y elimine el directorio virtual y los archivos de inetpub.
  5. Ir a Inet mgr, escriba inetmgr in run pulse enter.
  6. En el sitio web predeterminado, cree un directorio virtual, mantenga los archivos desplegados en inetpub y navegue por los archivos.
  7. Permitir el acceso apropiado, como leer, ejecutar guiones y navegar. Eso es todo

bandera como su respuesta si usted tiene otra cosa que le resulte útil, hágamelo saber ...

0

PI ventana funciona con Windows XP SP3 + (y mayor) y se puso los prerrequisitos para un servidor web dev.

http://www.microsoft.com/web/downloads/platform.aspx

Manos arriba, aunque - no he probado a mí mismo, pero me gustaría darle una oportunidad para un servidor dev. Puede ser de su interés

Cuestiones relacionadas