Updates silently before starting

This forum is for eXpress++ general support.
Message
Author
User avatar
rdonnay
Site Admin
Posts: 4813
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: Updates silently before starting

#11 Post by rdonnay »

Try RunShell ("", "Downloads.exe" ,. T.)
The eXpress train is coming - and it has more cars.

User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

Re: Updates silently before starting

#12 Post by Eugene Lutsenko »

This is something I've tried. He does not change anything in this regard. But it works, does what you need. So I was quite happy with everything. I only wish that I had a demo xb2net. I will try to buy at the university.

User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

Re: Updates silently before starting

#13 Post by Eugene Lutsenko »

The program: «_START_AIDOS.exe», is removed from the system user "Aidos-X++" care of checking for and downloading updates. This program should simply download link: http://lc.kubagro.ru/Install_Aidos-X/_START_AIDOS.exe, placed in a folder with the executable module of the system and always run the system with the help of this file.

When the program starts _START_AIDOS.EXE Aidos system should not be run because it is contained in the file updates, and when you extract a conflict, if the system is running.

1 _START_AIDOS.exe program determines the date of Aidos in the current folder, and the date of the update on the FTP-server without downloading them, and, and if the system is outdated Aidos, download the update. (If the current folder contains no executable module of Aidos, the program attempts to download the full instillation of the system, but can not do so due to the limited functionality of the demo version of the library Xb2NET.DLL).

2 After that, a dialog box appears with the message that we must first unzip the system, replacing all files (option: «Yes to All» or «OwerWrite All»), and only then close the window. The appearance of the windows archiver takes a moment later, a dialog box appears, almost simultaneously with it and on top of it. Therefore, to read the box with this message you need to move the window archiver.

3 Then the program starts _START_AIDOS.exe updates on decompression. After graduating unzipping window archiver with the mapping stage of the process disappears.

4 After closing the dialog box with instructions (see. Claim 2), there is the launch of an updated version of Aidos performance.

For the program _START_AIDOS.exe required library: Xb2NET.DLL, which can be downloaded here: http://lc.kubagro.ru/Install_Aidos-X/Xb2NET.DLL. Before the first start of the program the library will need to download and put in a folder with the program, and hence executable module system "Aidos-X ++", or any other location which is registered in the operating system search path, for example, folder: c:\Windows\System32\. This library is worth about $ 500 and I do not, so I give only a free demo version, which reports a reduced functionality, but for our purposes it is enough.

Thank you very much! This is quite a working version!

Code: Select all

#include "xb2net.ch" 
#pragma Library("XB2NET.LIB")

PROCEDURE AppSys
// Рабочий стол остается окном приложения
RETURN

********************************************************************************
FUNCTION Main()

LOCAL  GetList[0], GetOptions, nColor, oMessageBox, oMenuWords, oDlg, ;
       oMenuBar,oMenu1,oMenu2,oMenu3,oMenu4,oMenu5,oMenu6,oMenu7,;
       oMenu3_3

   DC_IconDefault(1000)

   SET DECIMALS TO 15
   SET DATE GERMAN
   SET ESCAPE On

   SET COLLATION TO SYSTEM   // Руссификация
   *SET COLLATION TO ASCII   // Руссификация

*** Flag = 0. Что-то вообще не то
*** Flag = 1. Если в текущей папке исполнимого файла системы нет, то скачивание и разархивирование полного архива и запуск системы на исполнение
*** Если в текущей папке исполнимый файл системы есть, то
*** проверка дат создания файла системы и файла обновлений
*** Flag = 2. Если система устарела - скачивание обновлений и запуск новой версии системы
*** Flag = 3. Иначе  - запуск существующей версии системы

Flag = 0

mCountSys = ADIR("_aidos-x.exe")

IF mCountSys = 0                                    // В текущей папке исполнимого файла системы нет

   Flag = 1

ELSE

   Flag = 2                                         // Возможно система устарела, надо скачать и развернуть обновления

   PRIVATE aName[1], aSize[1], aDate[1]
   mCountSys = ADIR("_aidos-x.exe", aName, aSize, aDate )
   mDateSys = aDate[1]
   StrFile(DTOC(aDate[1]), "DateSys.txt")           // Запись текстового файла с датой создания исполнимого модуля системы

ENDIF

cGDServer:="http://lc.kubagro.ru"
Ftp_User  :="*******"
Ftp_Passw:="*******"
Ftp_File:="Downloads.exe"

*savepath:="c:\Downloads\"

oFtp := XbFTPClient():new()

IF oFtp:Connect(cGDServer)                          // Соединение
   
   IF oFtp:Login(Ftp_User, Ftp_Passw)               // Авторизация
      oFtp:PassiveMode:=.T.                         // Пассивный режим

      // Flag = 1. Если в текущей папке исполнимого файла системы нет, то скачивание и разархивирование полного архива и запуск системы на исполнение

      IF Flag = 1

         IF oFtp:GetFile(Ftp_File, "Aidos-x.exe")
*           LB_Warning('Start and update System "Aidos-X++"', '(C) System "Aidos-X++"' )
         ELSE
            LB_Warning('Update file can not be found on the FTP server', '(C) System "Aidos-X++"')
         ENDIF

      ELSE

         ***** Проверка времени создания файла обновлений без его скачивания прямо на FTP-сервере

         aFileUpd:=oFtp:Directory("Downloads.exe")
         mDateUpd = CTOD(SUBSTR(aFileUpd[1], 4, 2) + "." + SUBSTR(aFileUpd[1], 1, 2) + ".20" + SUBSTR(aFileUpd[1], 7, 2))
         StrFile(DTOC(mDateUpd), "DateUpd.txt")     // Запись текстового файла параметров файла обновлений

         ** Flag = 2. Если система устарела - скачивание обновлений и запуск новой версии системы

         IF mDateSys < mDateUpd                     // Исполнимый файл системы в текущей папке старее файла обновлений
            Flag = 2                                // Система устарела, надо скачать и развернуть обновления
            IF oFtp:GetFile(Ftp_File, "Downloads.exe")              // Скачивание файла обновлений
*              LB_Warning('Start and update System "Aidos-X++"', '(C) System "Aidos-X++"' )
            ELSE
               LB_Warning('Update file can not be found on the FTP server', '(C) System "Aidos-X++"')
            ENDIF
         ELSE
            Flag = 3                                // Система не устарела, просто запустить ее
         ENDIF
      ENDIF
   ELSE
      LB_Warning('Authorization error with the FTP server', '(C) System "Aidos-X++"' )
   ENDIF
ELSE
   LB_Warning('Error connecting to FTP server', '(C) System "Aidos-X++"' )
ENDIF

oFtp:close()
oFTP:destroy()

*** Если файл обновлений новее установленной на компьютере системы, то развернуть его, иначе просто запустить систему

DO CASE
   CASE Flag = 0       // Что-то не то
        LB_Warning('Error! Error! Error! Error!', '(C) System "Aidos-X++"' )
   CASE Flag = 1       // Flag = 1. Если в текущей папке исполнимого файла системы нет, то скачивание и разархивирование полного архива и запуск системы на исполнение
        RunShell("","Aidos-x.exe",.T.)       // Полный архив - инсталляция
        aMess := {}
        AADD(aMess, 'Необходимо выполнить разархивирование')
        AADD(aMess, 'и только после этого закрыть данное окно')
        AADD(aMess, 'после чего система будет запущена.')
        AADD(aMess, '')
        AADD(aMess, 'При разархивировании необходимо выбрать')
        AADD(aMess, 'опцию: "Копировать поверх всех файлов"')
        AADD(aMess, 'опцию: "Yes to All" или "OwerWrite All"')
        LB_Warning(aMess, '(C) System "Aidos-X++"' )
        RunShell("","_aidos-x.exe",.T.)      // Исполнимый файл системы
   CASE Flag = 2       // Flag = 2. Если система устарела - скачивание обновлений и запуск новой версии системы
        RunShell("","Downloads.exe",.T.)
        aMess := {}
        AADD(aMess, 'Необходимо выполнить разархивирование')
        AADD(aMess, 'и только после этого закрыть данное окно')
        AADD(aMess, 'после чего система будет запущена.')
        AADD(aMess, '')
        AADD(aMess, 'При разархивировании необходимо выбрать')
        AADD(aMess, 'опцию: "Копировать поверх всех файлов"')
        AADD(aMess, 'опцию: "Yes to All" или "OwerWrite All"')
        LB_Warning(aMess, '(C) System "Aidos-X++"' )
        RunShell("","_aidos-x.exe",.T.)
   CASE Flag = 3       // Flag = 3. Запуск существующей версии системы
        RunShell("","_aidos-x.exe",.T.)
ENDCASE

***********************************************************************************************************************
FUNCTION LB_Warning( message, ctitle )

  LOCAL aMsg := {}
  DEFAULT cTitle TO ''
  IF valtype(message) # 'A'
    aadd(aMsg,message)
  ELSE
    aMsg := message
  ENDIF
  IF LEN(ALLTRIM(cTitle)) > 0
     DC_MsgBox( ,,aMsg,cTitle)
  ELSE
     DC_MsgBox( ,,aMsg,'Универсальная когнитивная аналитическая система "Эйдос-Х++"')
  ENDIF

RETURN NIL
[/size]

Post Reply