Страница 4 из 4

Re: Лаунчер для DataExpress с функционалом обновления программы.

Добавлено: 08 май 2018, 13:56
sotmel
YurAnt писал(а):В принципе довольно сносная обновлялка получилась. Код вставляется в Main, там и живет. При каждом запуске DX тихо "спрашивает" версию с сайта и в случае нахождения свежей, предлагает ее скачать

Код: Выделить всё

function URLDownloadToFile(pCaller: cardinal; URL: PChar;
FileName: PChar;Reserved: cardinal; lpfnCB : cardinal): cardinal;
external 'URLDownloadToFileA@urlmon.dll stdcall';

function DeleteUrlCacheEntry(lpszUrlName:PChar):cardinal;
external 'DeleteUrlCacheEntry@wininet.dll stdcall';

procedure CheckAndInstallUpdate;
var Current,New:TDateTime;
objWinHttp:variant;
begin
Current:=StrToDate(FormatDateTime('dd.mm.yyyy',FileDateToDateTime(FileAge(Application.Exename))));
try
    objWinHttp := CreateOleObject('MSXML2.XMLHTTP');
    objWinHttp.Open('GET', 'http://mydataexpress.ru/latest_version.php', false);
    objWinHttp.Send;
  if StrToDate(objWinHttp.ResponseText)<>Current then
 // MsgBox('Проверка обновлений','У вас установлена последняя версия DataExpress.')
 // else
  if MessageDlg(
  'Обновление',
  'Новая версия DataExpress (от '+objWinHttp.ResponseText+') доступна для скачивания. Загрузить?',
  mtInformation,
  [mbYes,mbNo]) = 6 then
    begin
    debug('Загрузка новой версии...');
    DeleteUrlCacheEntry('http://mydataexpress.ru/files/dx3bsetup.exe');
    Application.ProcessMessages;
    if URLDownloadToFile(0, 'http://mydataexpress.ru/files/dx3bsetup.exe',
    PChar(GetTempDir+'dx3bsetup.exe'), 0, 0)=0 then
    begin
    debug('Установка...');
   [color=#4000FF] ShellExecute('',GetTempDir+'dx3bsetup.exe','','',5)[/color]
    end
    else
      begin
      debug('Ошибка. Загрузка обновления не удалась.');
      objWinHttp:=Unassigned;
      exit;
      end;
    end;
 // else exit;
finally
  objWinHttp:=Unassigned;
except;
  debug(ExceptionParam);
  objWinHttp:=Unassigned;
end;
end;

procedure Database_Open;
begin
 CheckAndInstallUpdate;
end;


Подскажите пожалуйста как можно реализовать ввод логина и паса в учетку админа при установке обновления?

Re: Лаунчер для DataExpress с функционалом обновления программы.

Добавлено: 08 май 2018, 14:01
Гocть
Пасс должен быть защищен от "честных" пользователей или кулхацкеров?
VB-скрипт примерно такой:

Код: Выделить всё

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "cmd.exe /c C:\WINDOWS\System32\runas.exe /savecred /user:ADMIN_USERNAME C:\Downloads\dx3bsetup.exe", 0, false
Вводится пароль один раз и запоминается в зависимости от параметра /savecred
строку запуска можно прописать в ShellExecute вышеуказанного скрипта.

Re: Лаунчер для DataExpress с функционалом обновления программы.

Добавлено: 08 май 2018, 14:17
sotmel
кулхацкеры повсюду...
в текущий момент как проще...
усматриваю подводный камень в подобном действии:
а если комп из другой сетки? Попробую пожалуй сисадминов политику попробовать изменить.

Re: Лаунчер для DataExpress с функционалом обновления программы.

Добавлено: 08 май 2018, 14:24
Гocть
sotmel писал(а):в текущий момент как проще...

Проще так (проверил, работает):

Код: Выделить всё

//ShellExecute('',GetTempDir+'dx3bsetup.exe','','',5)
    ShellExecute('','runas', '/savecred /user:Admin '+GetTempDir+'dx3bsetup.exe','',5) 

sotmel писал(а):а если комп из другой сетки?

В каком смысле? Растолкуйте.

Re: Лаунчер для DataExpress с функционалом обновления программы.

Добавлено: 31 май 2018, 14:24
sotmel
Есть комп у приятеля в надзорном ведомстве, которое задает нам очень много вопросов и проще дать им доступ к базе, чем отвечать на постоянные запросы ОФИЦИАЛЬНО, находится он даже не в нашем VPN соответственно (не знаю как настроили это админы, но оно работает...), поэтому пусть уж ввод пароля тогда остается как был, не у всех Admin обозвана учетка, у наших дурачков вообще "12345" пользователь админ... так что во избежании ошибок пусть остается как есть...
Но есть момент: апрельские версии обновлялись прекрасно, а вот с майскими есть ньюанс:
Окно программы требуется закрывать вручную, иначе ошибка при копировании, в прежних версиях оно закрывалось автоматически....

Re: Лаунчер для DataExpress с функционалом обновления программы.

Добавлено: 31 май 2018, 14:43
Гocть
Окно программы требуется закрывать вручную, иначе ошибка при копировании, в прежних версиях оно закрывалось автоматически....

Специально откатился на предыдущую версию от 22.05.2018 и запустил скрипт. Он скачал последнюю версию от 27.05, запустил, при установке корректно закрыл все окна.
У вас компутер поломатый, батенька. Попробуйте его от пыли продуть, отпишитесь.

Re: Лаунчер для DataExpress с функционалом обновления программы.

Добавлено: 31 май 2018, 15:34
sotmel
все компутеры разом поломаться не могут, сделаю скрины на днях, у меня не все пользователи обновленные...

Re: Лаунчер для DataExpress с функционалом обновления программы.

Добавлено: 31 май 2018, 17:51
Гocть
sotmel писал(а):все компутеры разом поломаться не могут

Видать у меня компутер волшебный то. Отложу ка я ентот экземпляр в чулан, пущай лежит внукам.

Лаунчер для DataExpress с функционалом обновления программы.

Добавлено: 28 апр 2020, 10:46
Morozbl4
А как сделать чтобы имя администратора тоже запрашивалось и запоминалось?