Вопрос Обновление модпака

sergy2010

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

post-36801-0-15790800-1497498781_thumb.png

или альтернативу этому скрипту
 

sergy2010

Мимокрокодил
Код:
#define GameName "Sacred"
#define modpack_versionInfo "101"

[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://www.koreanrandom.com
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://proreduceri.tk/version.txt
russian.httpMsg=http://proreduceri.tk/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
ISCustomPage1: TWizardPage;
CheckingActualModpackVersionLabel: TLabel;
WelcomePageID: Integer;
ActualVersion: String;
ActualVersionLongint: Longint;
InstallVersionLongint: Longint;
ActualVersionMsg: String;
ReadyToInstall: Boolean;
TerminateInstall: Boolean;
NewRichEdit: TRichEditViewer;
NewButton1: TNewButton;
//NewButton2: TNewButton;

procedure CretePage;
begin
{ Creates custom wizard page }
ISCustomPage1 := CreateCustomPage(wpWelcome, 'ISCustomPage1_Caption', 'ISCustomPage1_Description');

{ ISCustomPage1 }
with ISCustomPage1.Surface do
begin
Name := 'ISCustomPage1';
end;
end;

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 DownloadButtonOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
if not ShellExec('', ExpandConstant('{cm:ForumLink}'), '', '', SW_SHOW, ewNoWait, ErrorCode) then
begin
CheckingActualModpackVersionLabel.Caption:=ExpandConstant('{cm:ErrorWhileOpeningUpdatePage}');
ReadyToInstall:=True;
end else
begin
TerminateInstall:=True;
WizardForm.Close;
end;
end;

function Form_CreatePage(PreviousPageId: Integer): Integer;
var
Page: TWizardPage;
begin
Page := ISCustomPage1;
WelcomePageID := Page.ID;
CheckingActualModpackVersionLabel := TLabel.Create(WizardForm);
with CheckingActualModpackVersionLabel do
begin
Parent := ISCustomPage1.Surface;
Visible:=True;
Left := ScaleX(5);
Top := ScaleY(200);
Font.Color:= clBlack;
end;

{ NewRichEdit }
NewRichEdit := TRichEditViewer.Create(WizardForm);
with NewRichEdit do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(8);
Top := ScaleY(16);
Width := ScaleX(400);
Height := ScaleY(153);
end;

{ NewButton1 }
NewButton1 := TNewButton.Create(WizardForm);
with NewButton1 do
begin
Parent := ISCustomPage1.Surface;
Left := ScaleX(325);
Top := ScaleY(195);
Width := ScaleX(75);
Height := ScaleY(23);
Caption := 'Download';
Enabled := True;
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
CretePage;
Form_CreatePage(ISCustomPage1.Surface);

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

Procedure CheckUpdates();
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}') + #13#10 + ExpandConstant('{cm:AllIsReadyForInstall}');;
NewRichEdit.Text := ExpandConstant('{cm:NewVersionFound}') + ActualVersionMsg + ExpandConstant('{cm:GoToLink}');
NewButton1.OnClick := @DownloadButtonOnClick;
NewButton1.Enabled := True;
ReadyToInstall:=True;
end
else
begin
CheckingActualModpackVersionLabel.Caption:=ExpandConstant('{cm:NoUpdates}');
ReadyToInstall:=True;
end;
end
else
begin
CheckingActualModpackVersionLabel.Caption:=ExpandConstant('{cm:CannotCheckUpdate}');
ReadyToInstall:=True;
end;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = ISCustomPage1.ID then
CheckUpdates();
end;

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

sergy2010

Мимокрокодил
есть вот этот скрипт ну к нему не хватает текстовиков которые отправляются на сервер и так далее может кто знает и поможет с этим скриптом
 
Сверху