Jump to content
Korean Random
EvilAlex

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

Recommended Posts

эти плагины нужно скачать? 

Ну можешь свой написать, тут уже как хочешь.

Share this post


Link to post

Short link
Share on other sites

Ну можешь свой написать, тут уже как хочешь.

:ok:

как правильно объединить чтобы работало без ошибок?

вот это 

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  Result := True;
  case CurPageID of
  wpSelectDir:
   begin
    if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin
      MsgBox('Установка модов невозможна, так как по выбранному пути отсутствует клиент игры World of Tanks. Выберите правильный путь и продолжайте установку!', mbError, MB_OK);
      Result := False;
   end;
   if FileExists(ExpandConstant('{app}')+'\WorldOfTanks.exe') then begin
     if FileVersion(ExpandConstant('{app}')+'\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;

и вот это 

function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result:= True;
if WizardSelectedComponents(False) = '' then
begin
MsgBox('Ни один из компонентов не выбран!', mbInformation, MB_OK);
Result:= False;
end;
end;

Share this post


Link to post

Short link
Share on other sites

Ну можешь свой написать, тут уже как хочешь.

я его установил в папку с прогой, что теперь прописывать что бы этот файл скачивался?

Share this post


Link to post

Short link
Share on other sites
я его установил в папку с прогой, что теперь прописывать что бы этот файл скачивался?

Установка плагина - это всего-лишь распаковка файлов в какую-то папку. Только этого мало.

В папке с установленным плагином есть примеры его использования.

 

@Ekspoint,

Function NextButtonClick(CurPageID: Integer): Boolean;
begin
 Result := True;
 case CurPageID of
 wpSelectDir:
  begin
   if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin
    MsgBox('Установка модов невозможна, так как по выбранному пути отсутствует клиент игры World of Tanks. Выберите правильный путь и продолжайте установку!', mbError, MB_OK);
    Result := False;
   end;
   if FileExists(ExpandConstant('{app}')+'\WorldOfTanks.exe') then begin
    if FileVersion(ExpandConstant('{app}')+'\WorldOfTanks.exe') < '{#Patch}' then begin
     MsgBoxEx(WizardForm.Handle, 'Моды не будут работать на данной версии игры! Моды предназначены для версии патча {#Patch} ', 'Моды не подходят к данному патчу World of Tanks', MB_OK or MB_ICONWARNING, 0, 0);
     Result:= false;
    end;
   end;
  end;
  wpSelectComponents:
   begin
    if WizardSelectedComponents(False) = '' then
    begin
     MsgBox('Ни один из компонентов не выбран!', mbInformation, MB_OK);
     Result:= False;
    end;
   end;
 end;
end;
Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

 

@Ekspoint,

Function NextButtonClick(CurPageID: Integer): Boolean;
begin
 Result := True;
 case CurPageID of
 wpSelectDir:
  begin
   if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin
    MsgBox('Установка модов невозможна, так как по выбранному пути отсутствует клиент игры World of Tanks. Выберите правильный путь и продолжайте установку!', mbError, MB_OK);
    Result := False;
   end;
   if FileExists(ExpandConstant('{app}')+'\WorldOfTanks.exe') then begin
    if FileVersion(ExpandConstant('{app}')+'\WorldOfTanks.exe') < '{#Patch}' then begin
     MsgBoxEx(WizardForm.Handle, 'Моды не будут работать на данной версии игры! Моды предназначены для версии патча {#Patch} ', 'Моды не подходят к данному патчу World of Tanks', MB_OK or MB_ICONWARNING, 0, 0);
     Result:= false;
    end;
   end;
  end;
  wpSelectComponents:
   begin
    if WizardSelectedComponents(False) = '' then
    begin
     MsgBox('Ни один из компонентов не выбран!', mbInformation, MB_OK);
     Result:= False;
    end;
   end;
 end;
end;

спасибо

а почему в таком виде не пашет ?

Function NextButtonClick1(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
wpSelectDir:
  begin
   if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin
    MsgBox('Установка модов невозможна, так как по выбранному пути отсутствует клиент игры World of Tanks. Выберите правильный путь и продолжайте установку!', mbError, MB_OK);
    Result := False;
   end;
   end;
   end;
   end;
Function NextButtonClick2(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
   wpSelectDir:
   begin
   if FileExists(ExpandConstant('{app}')+'\WorldOfTanks.exe') then begin
    if FileVersion(ExpandConstant('{app}')+'\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;
Function NextButtonClick3(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
  wpSelectComponents:
   begin
    if WizardSelectedComponents(False) = '' then
    begin
     MsgBox('Ни один из компонентов не выбран!', mbInformation, MB_OK);
     Result:= False;
    end;
   end;
end;
end;
Function NextButtonClick(CurPageID: Integer): Boolean;
begin
NextButtonClick1(CurPageID)
NextButtonClick2(CurPageID)
NextButtonClick3(CurPageID)
end;

Share this post


Link to post

Short link
Share on other sites
а почему в таком виде не пашет ?

Если в первом NextButtonClick результатом будет False, то следующий, с результатом True, перекроет предыдущий. Такая же история со вторым и третьим; первым и третьим..

Плюс ко всему, в главной NextButtonClick желательно вписывать Result := True, в начале.

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Если в первом NextButtonClick результатом будет False, то следующий, с результатом True, перекроет предыдущий. Такая же история со вторым и третьим; первым и третьим..

Плюс ко всему, в главной NextButtonClick желательно вписывать Result := True, в начале.

вот так?

Function NextButtonClick1(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
wpSelectDir:
  begin
   if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin
    MsgBox('Установка модов невозможна, так как по выбранному пути отсутствует клиент игры World of Tanks. Выберите правильный путь и продолжайте установку!', mbError, MB_OK);
    Result := False;
   end;
   end;
   end;
   end;
Function NextButtonClick2(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
   wpSelectDir:
   begin
   if FileExists(ExpandConstant('{app}')+'\WorldOfTanks.exe') then begin
    if FileVersion(ExpandConstant('{app}')+'\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;
Function NextButtonClick3(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
  wpSelectComponents:
   begin
    if WizardSelectedComponents(False) = '' then
    begin
     MsgBox('Ни один из компонентов не выбран!', mbInformation, MB_OK);
     Result:= False;
    end;
   end;
end;
end;
Function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
NextButtonClick1(CurPageID)
NextButtonClick2(CurPageID)
NextButtonClick3(CurPageID)
end;

Share this post


Link to post

Short link
Share on other sites
вот так?

Ты из всего моего сообщения понял только то, что можно дописать результат (и то, не обязательно) ?

Это тебе ничего не даст, в этой ситуации.

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Ты из всего моего сообщения понял только то, что можно дописать результат (и то, не обязательно) ?

Это тебе ничего не даст, в этой ситуации.

че то не допер где менять надо

Edited by Ekspoint

Share this post


Link to post

Short link
Share on other sites

 

 

 

Установка плагина - это всего-лишь распаковка файлов в какую-то папку. Только этого мало.

В папке с установленным плагином есть примеры его использования.

 

@Ekspoint,

Function NextButtonClick(CurPageID: Integer): Boolean;
begin
 Result := True;
 case CurPageID of
 wpSelectDir:
  begin
   if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin
    MsgBox('Установка модов невозможна, так как по выбранному пути отсутствует клиент игры World of Tanks. Выберите правильный путь и продолжайте установку!', mbError, MB_OK);
    Result := False;
   end;
   if FileExists(ExpandConstant('{app}')+'\WorldOfTanks.exe') then begin
    if FileVersion(ExpandConstant('{app}')+'\WorldOfTanks.exe') < '{#Patch}' then begin
     MsgBoxEx(WizardForm.Handle, 'Моды не будут работать на данной версии игры! Моды предназначены для версии патча {#Patch} ', 'Моды не подходят к данному патчу World of Tanks', MB_OK or MB_ICONWARNING, 0, 0);
     Result:= false;
    end;
   end;
  end;
  wpSelectComponents:
   begin
    if WizardSelectedComponents(False) = '' then
    begin
     MsgBox('Ни один из компонентов не выбран!', mbInformation, MB_OK);
     Result:= False;
    end;
   end;
 end;
end;

Я выбрал 1 экзепляр

#define MyAppName "My Program"

#define MyAppVerName "My Program 1.5"

#define MyAppPublisher "My Company, Inc."

#define MyAppURL "http://www.mycompany.com"

 

[setup]

AppName={#MyAppName}

AppVerName={#MyAppVerName}

AppPublisher={#MyAppPublisher}

AppPublisherURL={#MyAppURL}

AppSupportURL={#MyAppURL}

AppUpdatesURL={#MyAppURL}

DefaultDirName={pf}\{#MyAppName}

DefaultGroupName={#MyAppName}

OutputBaseFilename=example1

Compression=lzma

SolidCompression=true

CreateAppDir=true

ShowLanguageDialog=yes

 

[Languages]

Name: english; MessagesFile: compiler:Default.isl

 

#include ReadReg(HKEY_LOCAL_MACHINE,'Software\Sherlock Software\InnoTools\Downloader','ScriptPath','');

 

procedure InitializeWizard();

begin

itd_init;

 

//Let's download two zipfiles from my website..

itd_addfile('http://www.sherlocksoftware.org/petz/files/dogz5.zip,expandconstant({tmp}\dogz5.zip'));

itd_addfile('http://www.sherlocksoftware.org/petz/files/petz4.zip,expandconstant({tmp}\petz4.zip'));

 

//Start the download after the "Ready to install" screen is shown

itd_downloadafter(wpReady);

end;

 

procedure CurStepChanged(CurStep: TSetupStep);

begin

if CurStep=ssInstall then begin //Lets install those files that were downloaded for us

filecopy(expandconstant('{tmp}\dogz5.zip'),expandconstant('{app}\dogz5.zip'),false);

filecopy(expandconstant('{tmp}\petz4.zip'),expandconstant('{app}\petz4.zip'),false);

end;

end;

Но как сделать так что он скачивал выбранный мод, например 

прицел (качает)

дамаг панель (качает)

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

Share this post


Link to post

Short link
Share on other sites

 

 

Я выбрал 1 экзепляр

#define MyAppName "My Program"

#define MyAppVerName "My Program 1.5"

#define MyAppPublisher "My Company, Inc."

#define MyAppURL "http://www.mycompany.com"

 

[setup]

AppName={#MyAppName}

AppVerName={#MyAppVerName}

AppPublisher={#MyAppPublisher}

AppPublisherURL={#MyAppURL}

AppSupportURL={#MyAppURL}

AppUpdatesURL={#MyAppURL}

DefaultDirName={pf}\{#MyAppName}

DefaultGroupName={#MyAppName}

OutputBaseFilename=example1

Compression=lzma

SolidCompression=true

CreateAppDir=true

ShowLanguageDialog=yes

 

[Languages]

Name: english; MessagesFile: compiler:Default.isl

 

#include ReadReg(HKEY_LOCAL_MACHINE,'Software\Sherlock Software\InnoTools\Downloader','ScriptPath','');

 

procedure InitializeWizard();

begin

itd_init;

 

//Let's download two zipfiles from my website..

itd_addfile('http://www.sherlocksoftware.org/petz/files/dogz5.zip,expandconstant({tmp}\dogz5.zip'));

itd_addfile('http://www.sherlocksoftware.org/petz/files/petz4.zip,expandconstant({tmp}\petz4.zip'));

 

//Start the download after the "Ready to install" screen is shown

itd_downloadafter(wpReady);

end;

 

procedure CurStepChanged(CurStep: TSetupStep);

begin

if CurStep=ssInstall then begin //Lets install those files that were downloaded for us

filecopy(expandconstant('{tmp}\dogz5.zip'),expandconstant('{app}\dogz5.zip'),false);

filecopy(expandconstant('{tmp}\petz4.zip'),expandconstant('{app}\petz4.zip'),false);

end;

end;

Но как сделать так что он скачивал выбранный мод, например 

прицел (качает)

дамаг панель (качает)

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

 

75 стр смотри

Edited by Ekspoint

Share this post


Link to post

Short link
Share on other sites

ребята ,как сделать надпись в лейбле вот так   НАНАНАНАНАНАНАНАНАН  ,а  то получается вот так   НАНАНАНАНАНАНАНАНАН

                                                                                                тратата                                                                 тратата

Share this post


Link to post

Short link
Share on other sites

ребята ,как сделать надпись в лейбле вот так   НАНАНАНАНАНАНАНАНАН  ,а  то получается вот так   НАНАНАНАНАНАНАНАНАН

                                                                                                тратата                                                                 тратата

двигай

Share this post


Link to post

Short link
Share on other sites

75 стр смотри

/// --- UnPack Begin --- ///

 

procedure ExtractResources();

var

ResultCode: Integer;

begin

ExtractTemporaryFile('7zA.exe');

CreateDir(ExpandConstant('{app}\7zA_Files'));

CreateDir(ExpandConstant('{app}\res_mods'));

FileCopy(ExpandConstant('{tmp}\7zA.exe'), ExpandConstant('{app}\7zA_Files\7zA.exe'), False);

 

If (IsComponentSelected('Bla\1')) and (FileExists(ExpandConstant('{app}\hangar_1.7z'))) then

begin

Exec(ExpandConstant('{app}\7zA_Files\7zA.exe'), 'x -y ..\hangar_1.7z -o..\res_mods', '', SW_Hide, ewWaitUntilTerminated, ResultCode);

DeleteFile(ExpandConstant('{app}\hangar_1.7z'));

end;

 

If (IsComponentSelected('Bla\2')) and (FileExists(ExpandConstant('{app}\hangar_2.7z'))) then

begin

Exec(ExpandConstant('{app}\7zA_Files\7zA.exe'), 'x -y ..\hangar_2.7z -o..\res_mods', '', SW_Hide, ewWaitUntilTerminated, ResultCode);

DeleteFile(ExpandConstant('{app}\hangar_2.7z'));

end;

 

DelTree(ExpandConstant('{app}\7zA_Files'), True, True, True);

end;

 

procedure CurStepChanged(CurStep: TSetupStep);

begin

If CurStep=ssDone then

begin

ExtractResources();

end;

end;

 

/// --- UnPack End --- ///

Данный код обязательно нужен? если например я делаю установщик не для wot, а просто закачку какого либо файла? Ну типа что бы скачать эмулятор телефона обязательно нужен данный код в скрипте? или можно оставить только

procedure CurPageChanged(CurPageID: Integer);

begin

if CurPageID = wpInstalling then

begin

if IsComponentSelected('Bla\1') then

begin

idpAddFile('http://www.com/hangar_1.7z' ExpandConstant('{app}\hangar_1.7z'));

end;

if IsComponentSelected('Bla\2') then

begin

idpAddFile('http://www.com/hangar_2.7z' ExpandConstant('{app}\hangar_2.7z'));

end;

end;

end;

 

procedure InitializeWizard();

begin

idpDownloadAfter(wpInstalling);

end;

75 стр смотри

и ещё вопрос. если я загрузил архив на яндекс диск, то как мне вставлять ссылку? или же на других сайтах 

Edited by Prost

Share this post


Link to post

Short link
Share on other sites
или можно оставить только

Можно.

 

ребята ,как сделать надпись в лейбле вот так   НАНАНАНАНАНАНАНАНАН  ,а  то получается вот так   НАНАНАНАНАНАНАНАНАН

                                                                                                тратата                                                                 тратата

Покажи как создан этот лейбл.

 

 

и ещё вопрос. если я загрузил архив на яндекс диск, то как мне вставлять ссылку?
Никак. Я.Диск с некоторых пор перестал поддерживать прямой доступ к серверу. Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

/// --- UnPack Begin --- ///

 

procedure ExtractResources();

var

ResultCode: Integer;

begin

ExtractTemporaryFile('7zA.exe');

CreateDir(ExpandConstant('{app}\7zA_Files'));

CreateDir(ExpandConstant('{app}\res_mods'));

FileCopy(ExpandConstant('{tmp}\7zA.exe'), ExpandConstant('{app}\7zA_Files\7zA.exe'), False);

 

If (IsComponentSelected('Bla\1')) and (FileExists(ExpandConstant('{app}\hangar_1.7z'))) then

begin

Exec(ExpandConstant('{app}\7zA_Files\7zA.exe'), 'x -y ..\hangar_1.7z -o..\res_mods', '', SW_Hide, ewWaitUntilTerminated, ResultCode);

DeleteFile(ExpandConstant('{app}\hangar_1.7z'));

end;

 

If (IsComponentSelected('Bla\2')) and (FileExists(ExpandConstant('{app}\hangar_2.7z'))) then

begin

Exec(ExpandConstant('{app}\7zA_Files\7zA.exe'), 'x -y ..\hangar_2.7z -o..\res_mods', '', SW_Hide, ewWaitUntilTerminated, ResultCode);

DeleteFile(ExpandConstant('{app}\hangar_2.7z'));

end;

 

DelTree(ExpandConstant('{app}\7zA_Files'), True, True, True);

end;

 

procedure CurStepChanged(CurStep: TSetupStep);

begin

If CurStep=ssDone then

begin

ExtractResources();

end;

end;

 

/// --- UnPack End --- ///

Данный код обязательно нужен? если например я делаю установщик не для wot, а просто закачку какого либо файла? Ну типа что бы скачать эмулятор телефона обязательно нужен данный код в скрипте? или можно оставить только

procedure CurPageChanged(CurPageID: Integer);

begin

if CurPageID = wpInstalling then

begin

if IsComponentSelected('Bla\1') then

begin

idpAddFile('http://www.com/hangar_1.7z' ExpandConstant('{app}\hangar_1.7z'));

end;

if IsComponentSelected('Bla\2') then

begin

idpAddFile('http://www.com/hangar_2.7z' ExpandConstant('{app}\hangar_2.7z'));

end;

end;

end;

 

procedure InitializeWizard();

begin

idpDownloadAfter(wpInstalling);

end;

и ещё вопрос. если я загрузил архив на яндекс диск, то как мне вставлять ссылку? или же на других сайтах 

только прямая ссылка 

файлообменики не помогут 

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...