Jump to content
Korean Random
EvilAlex

Создание инсталляторов для модпаков на базе Inno Setup

Recommended Posts

Здравствуйте парни. Подскажите пожалуйста код, который определяет о не соответствии версии игры и модпака, и запрещает дальнейшую установку или процедуру установщика ??? Вот типа как на скриншоте 

Screenshot_2.png.a9a02cdc28c65bf35a6b057aa024e860.png

 

Share this post


Link to post

Short link
Share on other sites

@P.S.Enot ты уже не первый год тут трешься на форуме, тебе разжевать и положить в рот нужно.

Поиск рулит в теме- тут все есть.

Share this post


Link to post

Short link
Share on other sites
5 минут назад, Xotabych сказал:

@P.S.Enot ты уже не первый год тут трешься на форуме, тебе разжевать и положить в рот нужно.

Поиск рулит в теме- тут все есть.

не че мне ненужно разжёвывать. просто попросил скинуть код. вот и все . не думаю что сложно кто знает тыкнуть или на страницу нужную или просто про копировать. Кому нужно тема ТУТ или вот архив с документом проверка версии клиента игры.rar

Edited by P.S.Enot

Share this post


Link to post

Short link
Share on other sites
22.01.2022 в 15:33, P.S.Enot сказал:

Здравствуйте парни. Подскажите пожалуйста код, который определяет о не соответствии версии игры и модпака, и запрещает дальнейшую установку или процедуру установщика ??? Вот типа как на скриншоте 

Screenshot_2.png.a9a02cdc28c65bf35a6b057aa024e860.png

 

Вот код с этой темы раз не можешь или  ленишься найти!!!

#define GameName "Sacred"
#define modpack_versionInfo "0.9.15"

[Setup]
AppName={#GameName}
AppVerName={#GameName}
DefaultDirName={pf}\{#GameName}
AppPublisher=troyan

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



[CustomMessages]
russian.Modpack=Модпак
russian.SupportForum=Тема на koreanrandom.com
russian.ForumLink=http://сайт.ru/updater
russian.UpdatedLabel=Обновлено:
russian.WOT_version=Версия WOT:
russian.modpack_version=Версия модпака:
russian.installer_version=wotunion installer
russian.CheckingActualModpackVersionLabel=Проверка обновлений модпака...
russian.CannotCheckUpdate=Ошибка при проверке обновлений. Далее - для установки
russian.NoUpdates=Обновлений не найдено. Далее - для установки
russian.ErrorWhileOpeningUpdatePage=Ошибка при переходе на страницу загрузки
russian.AllIsReadyForInstall=Все готово для установки. Нажмите Далее для продолжения
russian.UpdateFound=найдено
russian.httpVersion=http://сайт.ru/updater/version.txt
russian.httpMsg=http://сайт.ru/updater/msg.txt
russian.WOT_NotFound=Клиент World of Tanks не обнаружен. Установка будет прервана.
russian.for=для
russian.CheckAccess=Установка невозможна. Проверьте наличие прав доступа к файлам и папкам установленного клиента World of Tanks, закройте программы, которые используют папки и/или файли клиента World of Tanks, или запустите инсталлятор модпака с правами администратора.
russian.MustUninstallBefore=Установка невозможна. Воспользуйтесь деинсталлятором модпака для удаления предыдущей установки модпака (Пуск - Программы - wotunion modpack - Удалить wotunion modpack).
russian.NewVersionFound=Доступна новая версия модпака:
russian.GoToLink=Перейти по ссылке в браузере для загрузки ?
russian.CheckAccessUninstall=Деинсталляция невозможна. Проверьте наличие прав доступа к файлам и папкам установленного клиента World of Tanks закройте программы, которые используют папки и/или файлы клиента World of Tanks,  или запустите деинсталлятор модпака с правами администратора.



[Code]
 var
 CheckingActualModpackVersionLabel: TLabel;
 WelcomePageID: Integer;
 ActualVersion: String;
 ActualVersionLongint: Longint;
 InstallVersionLongint: Longint;
 ActualVersionMsg: String;
 ReadyToInstall: Boolean;
 TerminateInstall: Boolean;

function DownloadFile(const AURL: string; var AResponse: string): Boolean;
 var
  WinHttpRequest: Variant;
   begin
    Result := False;
     try
      WinHttpRequest := CreateOleObject('WinHttp.WinHttpRequest.5.1');
      WinHttpRequest.Open('GET', AURL, False);
      WinHttpRequest.Send;
      AResponse := WinHttpRequest.ResponseText;
     Case WinHttpRequest.Status of
      '200':
       begin
        Result := True;
       end;
     end;
     except
      ReadyToInstall:=True;
      AResponse := GetExceptionMessage;
      CheckingActualModpackVersionLabel.Caption:=ExpandConstant('{cm:CannotCheckUpdate}');
      Result := False;
     end;
   end;

procedure CurPageChanged(CurPageID: Integer);
 begin
  if CurPageID = wpSelectDir then
   begin

   end;
    WizardForm.InnerNotebook.Visible := CurPageID <> WelcomePageID;
 end;

function Form_CreatePage(PreviousPageId: Integer): Integer;
 var
  Page: TWizardPage;
   begin
    Page := CreateCustomPage(PreviousPageId, '', '');
    WelcomePageID := Page.ID;
    CheckingActualModpackVersionLabel := TLabel.Create(WizardForm);
     with CheckingActualModpackVersionLabel  do
      begin
       Parent := WizardForm.InnerPage;
       Visible:=True;
       Left := ScaleX(5);
       Top := ScaleY(292);
       Font.Color:= clBlack;
      end;
     Result := Page.ID;
   end;
  Procedure ForumLinkOnClick (Sender: TObject);
 var
  ErrorCode: Integer;
   Begin
    ShellExec ('open', ExpandConstant('{cm:ForumLink}'),'','', SW_SHOWNORMAL, ewNoWait, ErrorCode);
   end;

procedure InitializeWizard();
   begin
   Form_CreatePage(wpWelcome);

    with WizardForm.PageDescriptionLabel do
     begin
      Visible := False;
     end;
    with WizardForm.PageNameLabel do
     begin
      Visible := False;
     end;
  end;

function CheckUpdates():Boolean;
 var ErrorCode: Integer;
  begin
   if ReadyToInstall=False then
    begin
     CheckingActualModpackVersionLabel.Visible:=True;
     CheckingActualModpackVersionLabel.Caption := ExpandConstant('{cm:CheckingActualModpackVersionLabel}');
      if ((DownloadFile(ExpandConstant('{cm:httpVersion}'), ActualVersion)=True) and  (DownloadFile(ExpandConstant('{cm:httpMsg}'), ActualVersionMsg)=True)) then
       begin
        if (StrToIntDef(ActualVersion, ActualVersionLongint)) > (StrToIntDef('{#modpack_versionInfo}', InstallVersionLongint)) then
         begin
          CheckingActualModpackVersionLabel.Caption := CheckingActualModpackVersionLabel.Caption + ExpandConstant('{cm:UpdateFound}');
           if MsgBox(ExpandConstant('{cm:NewVersionFound}') + ActualVersionMsg + ExpandConstant('{cm:GoToLink}'), mbConfirmation, MB_YESNO) = IDYES then
            begin
             If not ShellExec('', ExpandConstant('{cm:ForumLink}'), '', '', SW_SHOW, ewNoWait, ErrorCode) then
              begin
               CheckingActualModpackVersionLabel.Caption:=ExpandConstant('{cm:ErrorWhileOpeningUpdatePage}');
               ReadyToInstall:=True;
               Result:=False;
              end
              else
               begin
                Result:=False;
                TerminateInstall:=True;
                WizardForm.Close;
              end;
            end
            else
             begin
              CheckingActualModpackVersionLabel.Caption:=ExpandConstant('{cm:AllIsReadyForInstall}');
              ReadyToInstall:=True;
              Result:=False;
            end;
         end
         else
          begin
           CheckingActualModpackVersionLabel.Caption:=ExpandConstant('{cm:NoUpdates}');
           ReadyToInstall:=True;
           Result:=False;
         end;
       end
       else
        begin
         CheckingActualModpackVersionLabel.Caption:=ExpandConstant('{cm:CannotCheckUpdate}');
         ReadyToInstall:=True;
         Result:=False;
       end;
    end
    else
     begin
      Result:=True;
    end;
  end;

function NextButtonClick(CurPageID: Integer): Boolean;
 begin
  if CurPageID <> WelcomePageID then
   begin
    Result:=True;
   end
   else
    begin
     Result:=CheckUpdates;
   end;
 end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
 begin
  if ((CurPageID=WelcomePageID) and (TerminateInstall=True)) then  Confirm := False;
 end;

или вот!!!

[Code]
function FileVersion(const FilePath: String): String;
var
  oFS: Variant;
begin
  oFS:= CreateOleObject('Scripting.FileSystemObject');
    try
      Result:= oFS.GetFileVersion(FilePath);
    except
  end;
end;
//"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""//
Function NextButtonClick(CurPageID: Integer): Boolean;
begin
 Result := True;
 case CurPageID of
 wpSelectDir:
  begin
     if FileExists(ExpandConstant('{app}')+'win32\WorldOfTanks.exe') then begin
    if FileVersion(ExpandConstant('{app}')+'win32\WorldOfTanks.exe') < '{#patch}' then begin
     MsgBoxEx(WizardForm.Handle, 'Моды не будут работать на данной версии патча игры! Моды предназначены для версии патча {#patch}', 'Моды не подходят к данному патчу World of Tanks', MB_OK or MB_ICONWARNING, 0, 0);
     Result:= false;
    end;
   end;
  end;
 end;
end;

 

Коды конечно немного устарели, но как образец и для размышления пойдут!!! Подправишь...

Edited by Nowik1971
Дополнение
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
37 минут назад, Nowik1971 сказал:

Вот код с этой темы раз не можешь или  ленишься найти!!!

#define GameName "Sacred"
#define modpack_versionInfo "0.9.15"

[Setup]
AppName={#GameName}
AppVerName={#GameName}
DefaultDirName={pf}\{#GameName}
AppPublisher=troyan

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



[CustomMessages]
russian.Modpack=Модпак
russian.SupportForum=Тема на koreanrandom.com
russian.ForumLink=http://сайт.ru/updater
russian.UpdatedLabel=Обновлено:
russian.WOT_version=Версия WOT:
russian.modpack_version=Версия модпака:
russian.installer_version=wotunion installer
russian.CheckingActualModpackVersionLabel=Проверка обновлений модпака...
russian.CannotCheckUpdate=Ошибка при проверке обновлений. Далее - для установки
russian.NoUpdates=Обновлений не найдено. Далее - для установки
russian.ErrorWhileOpeningUpdatePage=Ошибка при переходе на страницу загрузки
russian.AllIsReadyForInstall=Все готово для установки. Нажмите Далее для продолжения
russian.UpdateFound=найдено
russian.httpVersion=http://сайт.ru/updater/version.txt
russian.httpMsg=http://сайт.ru/updater/msg.txt
russian.WOT_NotFound=Клиент World of Tanks не обнаружен. Установка будет прервана.
russian.for=для
russian.CheckAccess=Установка невозможна. Проверьте наличие прав доступа к файлам и папкам установленного клиента World of Tanks, закройте программы, которые используют папки и/или файли клиента World of Tanks, или запустите инсталлятор модпака с правами администратора.
russian.MustUninstallBefore=Установка невозможна. Воспользуйтесь деинсталлятором модпака для удаления предыдущей установки модпака (Пуск - Программы - wotunion modpack - Удалить wotunion modpack).
russian.NewVersionFound=Доступна новая версия модпака:
russian.GoToLink=Перейти по ссылке в браузере для загрузки ?
russian.CheckAccessUninstall=Деинсталляция невозможна. Проверьте наличие прав доступа к файлам и папкам установленного клиента World of Tanks закройте программы, которые используют папки и/или файлы клиента World of Tanks,  или запустите деинсталлятор модпака с правами администратора.



[Code]
 var
 CheckingActualModpackVersionLabel: TLabel;
 WelcomePageID: Integer;
 ActualVersion: String;
 ActualVersionLongint: Longint;
 InstallVersionLongint: Longint;
 ActualVersionMsg: String;
 ReadyToInstall: Boolean;
 TerminateInstall: Boolean;

function DownloadFile(const AURL: string; var AResponse: string): Boolean;
 var
  WinHttpRequest: Variant;
   begin
    Result := False;
     try
      WinHttpRequest := CreateOleObject('WinHttp.WinHttpRequest.5.1');
      WinHttpRequest.Open('GET', AURL, False);
      WinHttpRequest.Send;
      AResponse := WinHttpRequest.ResponseText;
     Case WinHttpRequest.Status of
      '200':
       begin
        Result := True;
       end;
     end;
     except
      ReadyToInstall:=True;
      AResponse := GetExceptionMessage;
      CheckingActualModpackVersionLabel.Caption:=ExpandConstant('{cm:CannotCheckUpdate}');
      Result := False;
     end;
   end;

procedure CurPageChanged(CurPageID: Integer);
 begin
  if CurPageID = wpSelectDir then
   begin

   end;
    WizardForm.InnerNotebook.Visible := CurPageID <> WelcomePageID;
 end;

function Form_CreatePage(PreviousPageId: Integer): Integer;
 var
  Page: TWizardPage;
   begin
    Page := CreateCustomPage(PreviousPageId, '', '');
    WelcomePageID := Page.ID;
    CheckingActualModpackVersionLabel := TLabel.Create(WizardForm);
     with CheckingActualModpackVersionLabel  do
      begin
       Parent := WizardForm.InnerPage;
       Visible:=True;
       Left := ScaleX(5);
       Top := ScaleY(292);
       Font.Color:= clBlack;
      end;
     Result := Page.ID;
   end;
  Procedure ForumLinkOnClick (Sender: TObject);
 var
  ErrorCode: Integer;
   Begin
    ShellExec ('open', ExpandConstant('{cm:ForumLink}'),'','', SW_SHOWNORMAL, ewNoWait, ErrorCode);
   end;

procedure InitializeWizard();
   begin
   Form_CreatePage(wpWelcome);

    with WizardForm.PageDescriptionLabel do
     begin
      Visible := False;
     end;
    with WizardForm.PageNameLabel do
     begin
      Visible := False;
     end;
  end;

function CheckUpdates():Boolean;
 var ErrorCode: Integer;
  begin
   if ReadyToInstall=False then
    begin
     CheckingActualModpackVersionLabel.Visible:=True;
     CheckingActualModpackVersionLabel.Caption := ExpandConstant('{cm:CheckingActualModpackVersionLabel}');
      if ((DownloadFile(ExpandConstant('{cm:httpVersion}'), ActualVersion)=True) and  (DownloadFile(ExpandConstant('{cm:httpMsg}'), ActualVersionMsg)=True)) then
       begin
        if (StrToIntDef(ActualVersion, ActualVersionLongint)) > (StrToIntDef('{#modpack_versionInfo}', InstallVersionLongint)) then
         begin
          CheckingActualModpackVersionLabel.Caption := CheckingActualModpackVersionLabel.Caption + ExpandConstant('{cm:UpdateFound}');
           if MsgBox(ExpandConstant('{cm:NewVersionFound}') + ActualVersionMsg + ExpandConstant('{cm:GoToLink}'), mbConfirmation, MB_YESNO) = IDYES then
            begin
             If not ShellExec('', ExpandConstant('{cm:ForumLink}'), '', '', SW_SHOW, ewNoWait, ErrorCode) then
              begin
               CheckingActualModpackVersionLabel.Caption:=ExpandConstant('{cm:ErrorWhileOpeningUpdatePage}');
               ReadyToInstall:=True;
               Result:=False;
              end
              else
               begin
                Result:=False;
                TerminateInstall:=True;
                WizardForm.Close;
              end;
            end
            else
             begin
              CheckingActualModpackVersionLabel.Caption:=ExpandConstant('{cm:AllIsReadyForInstall}');
              ReadyToInstall:=True;
              Result:=False;
            end;
         end
         else
          begin
           CheckingActualModpackVersionLabel.Caption:=ExpandConstant('{cm:NoUpdates}');
           ReadyToInstall:=True;
           Result:=False;
         end;
       end
       else
        begin
         CheckingActualModpackVersionLabel.Caption:=ExpandConstant('{cm:CannotCheckUpdate}');
         ReadyToInstall:=True;
         Result:=False;
       end;
    end
    else
     begin
      Result:=True;
    end;
  end;

function NextButtonClick(CurPageID: Integer): Boolean;
 begin
  if CurPageID <> WelcomePageID then
   begin
    Result:=True;
   end
   else
    begin
     Result:=CheckUpdates;
   end;
 end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
 begin
  if ((CurPageID=WelcomePageID) and (TerminateInstall=True)) then  Confirm := False;
 end;

или вот!!!

[Code]
function FileVersion(const FilePath: String): String;
var
  oFS: Variant;
begin
  oFS:= CreateOleObject('Scripting.FileSystemObject');
    try
      Result:= oFS.GetFileVersion(FilePath);
    except
  end;
end;
//"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""//
Function NextButtonClick(CurPageID: Integer): Boolean;
begin
 Result := True;
 case CurPageID of
 wpSelectDir:
  begin
     if FileExists(ExpandConstant('{app}')+'win32\WorldOfTanks.exe') then begin
    if FileVersion(ExpandConstant('{app}')+'win32\WorldOfTanks.exe') < '{#patch}' then begin
     MsgBoxEx(WizardForm.Handle, 'Моды не будут работать на данной версии патча игры! Моды предназначены для версии патча {#patch}', 'Моды не подходят к данному патчу World of Tanks', MB_OK or MB_ICONWARNING, 0, 0);
     Result:= false;
    end;
   end;
  end;
 end;
end;

 

Коды конечно немного устарели, но как образец и для размышления пойдут!!! Подправишь...

Спасибо . вчера нашел уже, выше тоже вариант рабочий выложи. но за помощь большое спасибо 

Share this post


Link to post

Short link
Share on other sites

Доброго времени суток всем. Собрал бекап, удаление и тд. Но по чему то на вот такие функции  function BackupCheck_1(): Boolean; function BackupCheck_2(): Boolean; function BackupCheck_3(): Boolean; function BackupCheck_4(): Boolean;  пишет варнинги. типо какие то предупреждения . кто может подскажет с чем это связано? Скрипт использую этот BackUpPage.iss

Screenshot_2.png.7316d214863b695d75c66222b0353e94.png

2 часа назад, P.S.Enot сказал:

Доброго времени суток всем. Собрал бекап, удаление и тд. Но по чему то на вот такие функции  function BackupCheck_1(): Boolean; function BackupCheck_2(): Boolean; function BackupCheck_3(): Boolean; function BackupCheck_4(): Boolean;  пишет варнинги. типо какие то предупреждения . кто может подскажет с чем это связано? Скрипт использую этот BackUpPage.iss

Screenshot_2.png.7316d214863b695d75c66222b0353e94.png

 

Пожалуй сам себе отвечу, может кому то пригодится. Просто в функциях нужно было дописать Result:= True;

 

так же рабочий вариант прилагаю BackUpPage.iss

Edited by P.S.Enot

Share this post


Link to post

Short link
Share on other sites

Всем доброго времени суток. ребята помогите сделать еще две кнопки ссылками на социальные профили. типа вк и канал ютуб . вот код но я не понял как в него встроить еще две иконки сделать их кликабельными с переходом на группу вк и канал ютуб. Кому не сложно помогите пожалуйста . За ранее благодарю . вот мой код кнопка ссылкой.txt

Сам себе походу опять и отвечу. Вот так вот слепил вариант. короче код не придумал Две Кнопки Social.txt  картинки  не забываем добавить и указать к ним путь.  Вариант без Botva2

Edited by P.S.Enot

Share this post


Link to post

Short link
Share on other sites
09.02.2022 в 14:26, P.S.Enot сказал:

Всем доброго времени суток. ребята помогите сделать еще две кнопки ссылками на социальные профили. типа вк и канал ютуб . вот код но я не понял как в него встроить еще две иконки сделать их кликабельными с переходом на группу вк и канал ютуб. Кому не сложно помогите пожалуйста . За ранее благодарю . вот мой код кнопка ссылкой.txt

Сам себе походу опять и отвечу. Вот так вот слепил вариант. короче код не придумал Две Кнопки Social.txt  картинки  не забываем добавить и указать к ним путь.  Вариант без Botva2

Афигеть ты пролистал все страницы и нашёл что тебе нужно)))))

Share this post


Link to post

Short link
Share on other sites
4 часа назад, hevi сказал:

Афигеть ты пролистал все страницы и нашёл что тебе нужно)))))

нет не угадал 

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...