Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Отправить PM | Цитировать


Сделал набросок скрипта, реализующего обновление установленной ранее программы.
Просьба проверить кошерность кода. ))
Так же нужно вставить проверку дистрибутивной папки на наличие определенных файлов (см. коментарии в коде ниже).
За ранее спасибо за помощь.

Код: Выделить весь код
[Setup]
AppName=MyProg
AppVerName=MyProg
DefaultDirName={reg:HKLM\SOFTWARE\MyProg\Inform,InstallPath} ; путь до программной папки
AppVersion=1.1.0.1
UsePreviousAppDir=no
AppendDefaultDirName=no
AllowRootDirectory=yes
DirExistsWarning=no
DisableStartupPrompt=yes
DisableReadyPage=yes
; DisableFinishedPage=yes
DisableDirPage=True
DisableProgramGroupPage=yes
OutputBaseFilename=Setup
Compression=lzma
SolidCompression=no
Uninstallable=false

[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Files]
Source: {src}\Lics\*; DestDir: {app}\Serv\Lic\; Flags: external recursesubdirs skipifsourcedoesntexist

[_Code]
function GetInstallPath( AppID: String ): String;
var
Path: String;
    begin
    Path:= '';
    RegQueryStringValue(HKLM, 'SOFTWARE\MyProg\Inform', 'InstallPath', Path);
    Result:= Path;
    end;

function InitializeSetup(): Boolean;
var
s:string;
    begin
    Result:=True;
// Проверка через реестр
    if not RegValueExists(HKLM, 'SOFTWARE\MyProg\Inform', 'InstallPath') then
        begin
        s:='Программа не установлена.' #13#13 'Дальнейшая работа невозможна.';
        MsgBox(s, mbError, mb_Ok);
        Result:=False;
        end else
// Проверка присутствия главного файла в папке с установленной программой
          begin
          If (FileSearch('Serv\'+'infrmsrv.exe', ExpandConstant('{code:GetInstallPath}'))='') then
              begin
              s:='Извините, в директории '+ExpandConstant('{code:GetInstallPath}')+'' #13 'не обнаружены файлы, подтверждающие подлинность программы.' #13#13 'Пожалуйста, выберите правильный путь.';
              MsgBox(s, mbError, mb_Ok);
              Result:= False;
              end else
//
//  Здесь нужно вставить ПРОВЕРКУ НА СУЩЕСТВОВАНИЕ ФАЙЛОВ ПО МАСКЕ *.lic в дистрибутивной папке Serv\Lics\
//  Если в данной папке нет файлов *.lic, тогда ВЫВЕСТИ СЛЕДУЮЩЕЕ СООБЩЕНИЕ:
         begin
        s:='Скопируйте дополнения в папку:' #13#13 +ExpandConstant('{code:GetInstallPath}')+'\Serv\Lic';
        MsgBox(s, mbInformation, mb_Ok);
        Result:=False;  // сомневаюсь в необходимости этой строки
        end
//

                 end;
          end;
// и продолжить код, который будет дальше . . .

Отправлено: 12:36, 23-03-2012 | #1269