Actualización del conserver mediante proyecto de Distribución


    Precondiciones

    • El servidor del conserver debe tener un agente instalado, apuntando al repserver y con el módulo de distribucion activado en el perfil del agente.

    • El agente instalado en el conserver debe tener un perfil de agente sin listado de nodos de comunicación.


    Actualización de version 9.16 a 9.17

    Nota: Para la instalación del Conserver se requiere que el servidor tenga la versión 4.8 del framework de .NET o una versión posterior


    1. Crear un archivo con extensión .bat (ej: UpdateConserver.bat)

    2. Copiar y editar el siguiente script en el archivo creado y guárdelo.

    Nota:
    - Ingresar en la variable path la ruta donde se encuentra instalado el conserver.
    - Ingresar en la variable conserver el nombre completo del instalador del conserver
    - Si tiene más de un conserver y se encuentran instalados en una ruta diferente debe crear un .bat y un proyecto diferente por cada uno de los conserver


    :: Ingresar en la variable path la ruta donde se encuentra instalado el conserver
    SET path = C:\"Program Files (x86)"\Aranda\Conserver
    :: Ingresar el nombre del instalador .exe del conserver 
    SET conserver = Aranda.Conserver.Installer.9.17.0.0.exe
    SET config = Aranda.Conserver.Windows.Service.exe.config
               
    MsiExec.exe /X{96E7810B-02CE-40D1-A17D-4FDAC64B5B0C} /qn
    @timeout /t 6 /nobreak
    
    cd %TEMP%
    cmd.exe /c %conserver% /S /v/qn
    @timeout /t 20 /nobreak
    
    del %path%\%config%
    copy %TEMP%\%config%  %path%
    
    sc start ArandaConserverWindowsServiceV9
    
    del %TEMP%\%conserver%
    del %TEMP%\%config%
    

    1. Crear un archivo con extensión .config y nombrarlo Aranda.Conserver.Windows.Service.exe.config

    2. Copiar, configurar los campos de la llave <appSettings> y guardar.

        <?xml version="1.0" encoding="utf-8"?>
        <configuration>
            <configSections>
                <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
                <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
                <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
            </configSections>
            <connectionStrings>
                <add name="local" connectionString="Data Source=Data\local.dat;busytimeout=60" providerName="System.Data.SQLite.EF6" />
            </connectionStrings>
            <appSettings>
                <add key="dataConfiguration:defaultDatabase" value="local" />
                <add key="Serilog:MinimumLevel" value="Debug" />
                <add key="Serilog:WriteTo:0:Name" value="File" />
                <add key="Serilog:WriteTo:0:Args:path" value="Logs\log.txt" />
                <add key="Serilog:WriteTo:0:Args:shared" value="true" />
            <add key="Serilog:WriteTo:0:Args:rollingInterval" value="Day" />
                <add key="Logging:LogLevel:Default" value="Information" />
                <add key="serverAddress" value="" />
                <add key="enableProxy" value="false" />
                <add key="proxyAddress" value="" />
                <add key="proxyUser" value="" />
                <add key="proxyPassword" value="" />
                <add key="privateIp" value="" />
                <add key="publicIp" value="" />
                <add key="mqttServerPort" value="1884" />
                <add key="mqttIp" value="" />
                <add key="publicServerPort" value="80" />
                <add key="privateServerPort" value="80" />
                <add key="p2pPort" value="9501" />
                <add key="maxDistributionSleepMsPerThread" value="8" />
                <add key="maxDistributionThreads" value="4" />
                <add key="enableDiscoveryCommon" value="1" />
                <add key="SecondsPingRemoteServer" value="60" />
                <add key="enableSecurity" value="false" />
            </appSettings>
            <startup>
                <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
            </startup>
            <entityFramework>
                <providers>
                    <provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
                    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
                    <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
                </providers>
                <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
                    <parameters>
                        <parameter value="mssqllocaldb" />
                    </parameters>
                </defaultConnectionFactory>
            </entityFramework>
            <runtime>
                <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
                    <dependentAssembly>
                        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="DotNetZip" publicKeyToken="6583c7c814667745" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-1.14.0.0" newVersion="1.14.0.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <publisherPolicy apply="no" />
                        <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
                        <bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.122.19.1" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Extensions.Configuration.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Extensions.Configuration" publicKeyToken="adb9793829ddae60" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.0.0.1" newVersion="6.0.0.1" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Extensions.Configuration.EnvironmentVariables" publicKeyToken="adb9793829ddae60" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.0.0.1" newVersion="6.0.0.1" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.IdentityModel.Logging" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.23.1.0" newVersion="6.23.1.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.IdentityModel.Tokens" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.23.1.0" newVersion="6.23.1.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="System.IdentityModel.Tokens.Jwt" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.23.1.0" newVersion="6.23.1.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="RestSharp" publicKeyToken="598062e77f915f75" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-106.13.0.0" newVersion="106.13.0.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Extensions.Configuration.Binder" publicKeyToken="adb9793829ddae60" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.0.0.1" newVersion="6.0.0.1" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-4.2.2.0" newVersion="4.2.2.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-4.0.5.1" newVersion="4.0.5.1" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.0.0.6" newVersion="6.0.0.6" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-5.2.9.0" newVersion="5.2.9.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-4.2.2.0" newVersion="4.2.2.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Owin.Security.OpenIdConnect" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Extensions.Logging" publicKeyToken="adb9793829ddae60" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.Extensions.Primitives" publicKeyToken="adb9793829ddae60" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.IdentityModel.JsonWebTokens" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.23.1.0" newVersion="6.23.1.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.IdentityModel.Protocols" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.23.1.0" newVersion="6.23.1.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.IdentityModel.Protocols.OpenIdConnect" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.23.1.0" newVersion="6.23.1.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-5.2.9.0" newVersion="5.2.9.0" />
                    </dependentAssembly>
                    <dependentAssembly>
                        <assemblyIdentity name="Microsoft.IdentityModel.Abstractions" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                        <bindingRedirect oldVersion="0.0.0.0-6.23.1.0" newVersion="6.23.1.0" />
                    </dependentAssembly>
                </assemblyBinding>
            </runtime>
            <system.data>
                <DbProviderFactories>
                    <remove invariant="System.Data.SQLite.EF6" />
                    <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
                    <remove invariant="System.Data.SQLite" />
                    <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
                </DbProviderFactories>
            </system.data>
            <system.serviceModel>
                <behaviors>
                    <serviceBehaviors>
                        <behavior name="">
                            <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
                            <serviceDebug includeExceptionDetailInFaults="false" />
                        </behavior>
                    </serviceBehaviors>
                </behaviors>
                <services>
                    <service name="Aranda.Conserver.Ws.Service1">
                        <endpoint address="" binding="basicHttpBinding" contract="Aranda.Conserver.Ws.IService1">
                            <identity>
                                <dns value="localhost" />
                            </identity>
                        </endpoint>
                        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
                        <host>
                            <baseAddresses>
                                <add baseAddress="http://localhost:8733/Design_Time_Addresses/Aranda.Conserver.Ws/Service1/" />
                            </baseAddresses>
                        </host>
                    </service>
                </services>
            </system.serviceModel>
        </configuration>
    


    3. Crear un Paquete de distribucióntipo copia con el instalador del consever.

    4. Crear un Paquete de distribución tipo copia con el archivo Aranda.Conserver.Windows.Service.exe.config creado en los pasos 3 y 4.

    5. Crear un nuevo Paquete de distribución tipo ejecución con el archivo .bat creado en los pasos 1 y 2.

    6. Ingrese a la gestión de Distribución de ADM y cree un proyecto de Distribución de Software.

    7. En el proyecto agregue los paquetes creados en los pasos 5, 6 y 7 en el siguiente orden:

    • Paquete del instalador del conserver (Paquete tipo copia) agregando como ruta %TEMP%.
    • Paquete Aranda.Conserver.Windows.Service.exe.config (Paquete tipo copia) agregando como ruta %TEMP%.
    • Paquete UpdateConserver.bat (Paquete de tipo ejecución)


    8. Ejecute la distribución en el equipo a realizar la actualización del conserver.

    Nota: Si tiene más de un conserver y se encuentran instalados en una ruta diferente, debe crear un .bat, un .config y un proyecto diferente por cada uno de los conserver. Si los conserver mantienen la ruta de instalación y tienen la misma configuración se pueden enviar en el mismo proyecto de distribución


    9. En la configuración ADM defina los componentes de comunicación del reserver/conserver y compruebe la conexión.



    Actualizacion de versiones posteriores a 9.17

    Para realizar la actualización del conserver mediante proyecto de distribución es necesario seguir los siguientes pasos:

    1. Crear un archivo con extensión .bat (ej: UpdateConserver.bat)

    2. Copiar y editar el siguiente script en el archivo creado y guárdelo.

    Nota:
    - Ingresar en la variable path la ruta donde se encuentra instalado el conserver.**
    - Ingresar en la variable conserver el nombre completo del instalador del conserver
    - Si tiene más de un conserver y se encuentran instalados en una ruta diferente debe crear un .bat y un proyecto diferente por cada uno de los conserver


    :: Ingresar en la variable path la ruta donde se encuentra instalado el conserver
    SET path = C:\"Program Files (x86)"\Aranda\Conserver
    :: Ingresar el nombre del instalador .exe del conserver 
    SET conserver = Aranda.Conserver.Installer.9.16.3.6.exe
        
    copy %path%\Aranda.Conserver.Windows.Service.exe.config %TEMP%
    @timeout /t 3 /nobreak
       
    MsiExec.exe /X{96E7810B-02CE-40D1-A17D-4FDAC64B5B0C} /qn
    @timeout /t 6 /nobreak
    
    cd %TEMP%
    cmd.exe /c %conserver% /S /v/qn
    @timeout /t 20 /nobreak
    
    del %path%\Aranda.Conserver.Windows.Service.exe.config
    @timeout /t 3 /nobreak
    copy %TEMP%\Aranda.Conserver.Windows.Service.exe.config %path%
    @timeout /t 3 /nobreak
    
    sc start ArandaConserverWindowsServiceV9
    
    del %TEMP%\Aranda.Conserver.Windows.Service.exe.config
    del %TEMP%\%conserver%
    

    3. Crear un Paquete de distribución tipo copia con el instalador del consever.

    4. Crear un nuevo Paquete de distribución tipo ejecución con el archivo .bat creado en los pasos 1 y 2.

    5. Ingrese a la gestión de distribución de ADM y cree un proyecto de Distribución de software.

    6. En el proyecto agregue los paquetes creados en el paso 3 y 4 adicionando primero el paquete del instalador del conserver (Paquete tipo copia) agregando como ruta %TEMP%.


    7. Ejecute la distribución en el equipo a realizar la actualización del conserver.

    Nota:
    - Si tiene más de un conserver y se encuentran instalados en una ruta diferente, debe crear un .bat y un proyecto diferente por cada uno de los conserver. Si los conserver mantienen la ruta de instalación se pueden enviar en el mismo proyecto de distribución.


    Si la distribución ha sido exitosa, el conserver queda actualizado.

    8. En la configuración ADM defina los componentes de comunicación del reserver/conserver y compruebe la conexión.