Jump to content
Korean Random

Prost

User
  • Posts

    42
  • Joined

  • Last visited

Posts posted by Prost

  1. Этого определённо достаточно хД.

    Читай в справке про секцию [Files].

    спс всё получилось, но как сделать что бы он определял какая ссылка, к тому или иному компоненту относится. Вот такой скрипт

    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;

  2. MainLabel:= TLabel.Create(WizardForm);
    with MainLabel do
    begin
     ...
     Caption:= #9 + 'Вас приветствует мастер установки' + #9#9 + '«MEDNIKs MODPACK»' + #9#9 + 'для патча 0.9.5';
    end; 
    

    Приблизительно так.

    Это Юникод. А ресурс ты взял от Анси.

     

    а какая тогда мне нужна версия? такая же но анси?

  3. А с чего ты взял, что ругается на ссылку?

    Ресурс (idp.iss) вообще подключён?

    вот это?

    procedure ITD_Cancel;

    external 'itd_cancel@files:itdownload.dll stdcall';

     

    procedure ITD_ClearFiles;

    external 'itd_clearfiles@files:itdownload.dll stdcall';

     

    function ITD_DownloadFile(url: PChar; destfilename: PChar): integer;

    external 'itd_downloadfile@files:itdownload.dll stdcall';

     

    function ITD_GetResultLen: integer;

    external 'itd_getresultlen@files:itdownload.dll stdcall';

     

    procedure ITD_GetResultString(buffer: pchar; maxlen: integer);

    external 'itd_getresultstring@files:itdownload.dll stdcall';

     

    procedure ITD_Internal_InitUI(HostHwnd: dword);

    external 'itd_initui@files:itdownload.dll stdcall';

     

    function ITD_Internal_LoadStrings(filename: PChar): boolean;

    external 'itd_loadstrings@files:itdownload.dll stdcall';

     

    procedure ITD_Internal_SetOption(option, value: PChar);

    external 'itd_setoption@files:itdownload.dll stdcall';

     

    function ITD_Internal_GetFileSize(url: pchar; var size: Cardinal): boolean;

    external 'itd_getfilesize@files:itdownload.dll stdcall';

     

    function ITD_Internal_GetString(index: integer): boolean;

    external 'itd_getstring@files:itdownload.dll stdcall';

     

    function ITD_Internal_GetOption(option: PChar; buffer: PChar; length: integer): integer;

    external 'itd_getoption@files:itdownload.dll stdcall';

     

    procedure ITD_Internal_SetString(index: integer; value: PChar);

    external 'itd_setstring@files:itdownload.dll stdcall';

     

    procedure ITD_Internal_AddFile(url: PChar; destfilename: PChar);

    external 'itd_addfile@files:itdownload.dll stdcall';

     

    procedure ITD_Internal_AddMirror(url: PChar; destfilename: PChar);

    external 'itd_addmirror@files:itdownload.dll stdcall';

     

    procedure ITD_Internal_AddFileSize(url: PChar; destfilename: PChar; size: integer);

    external 'itd_addfilesize@files:itdownload.dll stdcall';

     

    function ITD_Internal_DownloadFiles(surface: hwnd): integer;

    external 'itd_downloadfiles@files:itdownload.dll stdcall';

     

    function ITD_FileCount: integer;

    external 'itd_filecount@files:itdownload.dll stdcall';

     

    function ITD_Internal_PostPage(url, buffer: PChar; length: integer): boolean;

    external 'itd_postpage@files:itdownload.dll stdcall';

     

     

    const

    ITDERR_SUCCESS = 0;

    ITDERR_USERCANCEL = 1;

    ITDERR_ERROR = 3;

     

    {Constants for Language String indexes:}

    ITDS_DownloadFailed = 104;

     

    ITDS_TitleCaption = 200;

    ITDS_TitleDescription = 201;

     

    ITDS_MessageFailRetryContinue = 250;

    ITDS_MessageFailRetry = 251;

     

    ITDS_Retry = 502;

     

    {Constants for language strings of updater example}

    ITDS_Update_Caption = 600;

    ITDS_Update_Description = 601;

    ITDS_Update_Checking = 602;

    ITDS_Update_NewAvailable = 603;

    ITDS_Update_NoNewAvailable = 604;

    ITDS_Update_WantToCheck = 605;

    ITDS_Update_Failed = 606;

    ITDS_Update_WillLaunch = 607;

    ITDS_Update_WillLaunchWithPath = 608;

     

    ITD_Event_DownloadPageEntered = 1;

    ITD_Event_DownloadPageLeft = 2;

    ITD_Event_DownloadFailed = 3;

     

    var

    itd_allowcontinue: boolean;

    itd_retryonback: boolean;

     

    ITD_AfterSuccess: procedure(downloadPage: TWizardPage);

    ITD_EventHandler: procedure(event: integer);

     

    procedure ITD_DownloadFiles();

    begin

    ITD_Internal_DownloadFiles(0);

    end;

     

    procedure ITD_AddFile(const URL, filename: string);

    begin

    ITD_Internal_AddFile(URL, filename);

    end;

     

    procedure ITD_AddMirror(const URL, filename: string);

    begin

    ITD_Internal_AddMirror(URL, filename);

    end;

     

    procedure ITD_AddFileSize(const URL, filename: string; size: integer);

    begin

    ITD_Internal_AddFileSize(URL, filename, size);

    end;

     

    function ITD_HandleSkipPage(sender: TWizardPage): boolean;

    begin

    result := (itd_filecount = 0);

    end;

     

    procedure ITD_SetString(index: integer; value: string);

    begin

    itd_internal_setstring(index, value);

    end;

     

    function ITD_GetFileSize(const url: string; var size: cardinal): boolean;

    begin

    result := itd_internal_getfilesize(PChar(url), size);

    end;

     

    function ITD_LoadStrings(const filename: string): boolean;

    begin

    result := itd_internal_loadstrings(filename);

    end;

     

    function ITD_GetString(index: integer): string;

    begin

    itd_internal_getstring(index);

    setlength(result, ITD_GetResultLen);

    ITD_GetResultString(PChar(result), length(result));

    end;

     

    procedure ITD_NowDoDownload(sender: TWizardPage);

    var err: integer;

    begin

    wizardform.backbutton.enabled := false;

    wizardform.nextbutton.enabled := false;

     

    sender.caption := ITD_GetString(ITDS_TitleCaption);

    sender.description := ITD_GetString(ITDS_TitleDescription);

     

    err := ITD_Internal_DownloadFiles(sender.surface.handle);

     

    case err of

    ITDERR_SUCCESS: begin

    wizardform.nextbutton.enabled := true;

    wizardform.nextbutton.onclick(nil);

     

    if itd_aftersuccess <> nil then

    itd_aftersuccess(sender);

    end;

    ITDERR_USERCANCEL: ; //Don't show a message, this happens on setup close and cancel click

    else begin

    //Some unexpected error, like connection interrupted

    wizardform.backbutton.caption := ITD_GetString(ITDS_Retry);

    wizardform.backbutton.enabled := true;

    wizardform.backbutton.show();

    itd_retryonback := true;

     

    wizardform.nextbutton.enabled := itd_allowcontinue;

     

    if ITD_EventHandler <> nil then

    ITD_EventHandler(ITD_Event_DownloadFailed);

     

    if itd_allowcontinue then begin //Download failed, we can retry, continue, or exit

    sender.caption := ITD_GetString(ITDS_DownloadFailed);

    sender.description := ITD_GetString(ITDS_MessageFailRetryContinue);

     

    MsgBox(ITD_GetString(ITDS_MessageFailRetryContinue), mbError, MB_OK)

    end else begin //Download failed, we must retry or exit setup

    sender.caption := ITD_GetString(ITDS_DownloadFailed);

    sender.description := ITD_GetString(ITDS_MessageFailRetry);

     

    MsgBox(ITD_GetString(ITDS_MessageFailRetry), mbError, MB_OK)

    end;

    end;

    end;

    end;

     

    procedure ITD_HandleShowPage(sender: TWizardPage);

    begin

    wizardform.nextbutton.enabled := false;

    wizardform.backbutton.hide();

     

    if ITD_EventHandler <> nil then

    ITD_EventHandler(ITD_Event_DownloadPageEntered);

     

    itd_nowdodownload(sender);

    end;

     

    function ITD_HandleBackClick(sender: TWizardpage): boolean;

    begin

    result := false;

    if itd_retryonback then begin

    itd_retryonback := false;

    wizardform.backbutton.hide();

    itd_nowdodownload(sender);

    end;

    end;

     

    function ITD_HandleNextClick(sender: TWizardpage): boolean;

    begin

    if ITD_EventHandler <> nil then

    ITD_EventHandler(ITD_Event_DownloadPageLeft);

     

    result := true;

    end;

     

    procedure ITD_Init;

    begin

    //Currently a NOP. Don't count on it in future.

    end;

     

    function ITD_PostPage(const url, data: string; out response: string): boolean;

    begin

    result := ITD_Internal_PostPage(PChar(url), PChar(data), length(data));

     

    if result then begin

    setlength(response, ITD_GetResultLen);

    ITD_GetResultString(PChar(response), length(response));

    end;

    end;

     

    function ITD_DownloadAfter(afterID: integer): TWizardPage;

    var itd_downloadPage: TWizardPage;

    begin

    itd_downloadpage := CreateCustomPage(afterID, ITD_GetString(ITDS_TitleCaption), ITD_GetString(ITDS_TitleDescription));

     

    itd_downloadpage.onactivate := @itd_handleshowpage;

    itd_downloadpage.onshouldskippage := @itd_handleskippage;

    itd_downloadpage.onbackbuttonclick := @itd_handlebackclick;

    itd_downloadpage.onnextbuttonclick := @itd_handlenextclick;

     

    itd_internal_initui(itd_downloadpage.surface.handle);

     

    result := itd_downloadpage;

    end;

     

    procedure ITD_SetOption(const option, value: string);

    begin

    //The options which call ITD_SetString are depreciated, use ITD_SetString directly

    if comparetext(option, 'UI_Caption') = 0 then

    ITD_SetString(ITDS_TitleCaption, value)

    else if comparetext(option, 'UI_Description') = 0 then

    ITD_SetString(ITDS_TitleDescription, value)

    else if comparetext(option, 'UI_FailMessage') = 0 then

    ITD_SetString(ITDS_MessageFailRetry, value)

    else if comparetext(option, 'UI_FailOrContinueMessage') = 0 then

    ITD_SetString(ITDS_MessageFailRetryContinue, value)

    else if comparetext(option, 'UI_AllowContinue') = 0 then

    ITD_AllowContinue := (value = '1')

    else

    ITD_Internal_SetOption(option, value);

    end;

     

    function ITD_GetOption(const option: string): string;

    begin

    setlength(result, 500);

    setlength(result, itd_internal_getoption(pchar(option), pchar(result), length(result)));

    end;

  4. Хз, как в других браузерах, но в мозилле есть удобный инспектор, в котором можно легко вытащить ссылки:

    у меня яндекс браузер. здесь есть что то типа этого но "Просмотреть код элемента". Нужно посмотреть код(ссылку) из той кнопки которая сделана ссылкой? 

  5.  

    Можно.

     

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

     

     

    Никак. Я.Диск с некоторых пор перестал поддерживать прямой доступ к серверу.

     

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

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

     

    спс. И ещё вот например я зашёл на сайт. мне нужно кинуть просто ссылку или что то сделать что бы скачивался тот файл который нужен. Например зашёл на сайт , а там несколько ссылок на программу, но они сделаны в виде надписи (для примера вот этот сайт http://qiqer.ru/emulyatory-java-dlya-zapuska-na-kompyutere.html)

  6. 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 стр смотри

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

  7.  

     

     

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

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

     

    @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;

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

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

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

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

  8. Не застявляй меня тебе повторно говорить одно и тоже, потом не плачь, мол я ему сделал, а он меня кинул, ок? А нотации пусть тебе мамка читает;)

    Ты можешь меня не трогать,а? Или ты психолог и в душу всегда заглядываешь и заставляешь делать то что ты говоришь. Не твоё дело, что я делаю, может мне нравится делать модпак и получаю от этого малую долю фана

  9. А ведь я говорил ему забей, он не послушал, чуствую, это надолго... А ты чего злой такой, Что случилось?

    Может прописать ему на выходных сразу всё как надо и пусть не мучается? Делов то на пол часа с модами:) ты как считаешь?

    Ну знаешь, я модпак делаю ещё и для своих друзей с которыми много играю. Так что не надо мне читать нотации и указывать. Я сам решаю что мне делать. 

    • Upvote 1
  10. Нет, ты дал не это. У тебя пример через кнопку. А я дал пример, как @Prost и просил: "нажимаешь на надпись и тебя кидает". То есть, через лейбл.

    Вылетает такая ошибка.  Ещё у меня стоит скрипт с картинками в модпаке. Как это исправить?

  11. [Files]
    Source: "{app}\res\audio\*"; DestDir: "{app}\res_mods\0.9.4\audio"; Flags: external recursesubdirs skipifsourcedoesntexist; Components: /название компонента\;
    

    В качестве "названия компонента" может использоваться родительский компонент всей озвучки.

     

     

    Это как? 

×
×
  • Create New...