[архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Ответить
 • Просмотры: 38
Аватара пользователя
pa60t9ra

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение pa60t9ra »

Цитата Krekerpro:



Доброго времени суток,хотелось бы узнать,как реализовать вот это
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]




Возможно я ошибаюсь , но скорее всего Inno Setup Form Designer-ом
Аватара пользователя
Serega

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение Serega »

А как сделать так что бы вываливалось окно перед самой распаковкой файлов и просило ввести логин и пароль а эти данные заносились в реестр памоготи пожалуйста оч оч надо реолизовать
Аватара пользователя
pa60t9ra

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение pa60t9ra »

Цитата Serega:



Посмотрите в архиве темы, этот вопрос уже поднимался.
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]




Просмотрел весь архив.

Кто-то уже задавал этот вопрос но не получил ответа.

Либо я я плохо всё просмотрел.
Аватара пользователя
A1EXXX

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение A1EXXX »

А подскажите как можно сделать так:



Изображение



Пожалуйста скажите как.
Вложения
Ultimate Test Black.7z
(4.14 КБ) 0 скачиваний
Ultimate Test Black.7z
(4.14 КБ) 0 скачиваний
Аватара пользователя
Krekerpro

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение Krekerpro »

Цитата Serega:



Сделал, не совсем как вы хотели, т.е. сделал отдельную страницу с выбором Steam или NoSteam.


Пример


[Setup]

AppID={{9C9D1016-916D-40D5-B034-A0071759F1B7}

AppName=Half-Life 2

AppVerName=My Half-Life 2

DefaultDirName={pf}\Half-Life 2

DefaultGroupName=Half-Life 2

OutputDir=.

UninstallFilesDir={app}\UninstallDir



[Languages]

Name: rus; MessagesFile: compiler:Languages\Russian.isl



[CustomMessages]

INST_MODE=Режим установки

INST_MODE_CPT=Пожалуйста, выберите в каком режиме будет устанавливаться программа

INST_EXPR=Steam

INST_EXPR_STR=Установка программы с параметрами Steam.

INST_CUST=NoSteam

INST_CUST_STR=Установка программы с параметрами NoSteam.

NEXT=Нажмите «Далее», чтобы продолжить.



[Files]

Source: compiler:Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion



[Icons]

Name: {group}\My Program; Filename: {app}\MyProg.exe; WorkingDir: {app}; Check: MyFuncIcons


Код: Выделить всё


function GetModuleHandle(lpModuleName: LongInt): LongInt;

  external 'GetModuleHandleA@kernel32.dll stdcall';



function ExtractIcon(hInst: LongInt; lpszExeFileName: PChar; nIconIndex: LongInt): LongInt;

  external 'ExtractIconA@shell32.dll stdcall';



function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur, hbrFlickerFreeDraw, diFlags: LongInt): LongInt;

  external 'DrawIconEx@user32.dll stdcall';



var

  SupportPage: TWizardPage;

  Steam, NoSteam: TNewRadiobutton;

  

function MyFuncIcons: Boolean;

begin

  if Steam.Checked = True then

    Result:= False

  else Result:= True;

end;



procedure InitializeWizard();

var

  Str1, Str2, Str3: TNewStaticText;

  Rect: TRect;

  hIcon: LongInt;

begin

  SupportPage:= CreateCustomPage(wpWelcome, ExpandConstant('{cm:INST_MODE}'), ExpandConstant('{cm:INST_MODE_CPT}'));



  Steam:= TNewRadiobutton.Create(SupportPage);

  with Steam do

    begin

      SetBounds(ScaleX(20), ScaleY(40), ScaleX(200), ScaleY(16));

      Font.Style:= [fsBold];

      Caption:= ExpandConstant('{cm:INST_EXPR}');

      Checked:= True;

      Parent:= SupportPage.Surface;

    end;

  

  hIcon:= ExtractIcon(GetModuleHandle(0), ExpandConstant('{sys}\shell32.dll'), 118);

  with TBitmapImage.Create(SupportPage) do

    begin

      SetBounds(ScaleX(36), Steam.Top + ScaleY(20), ScaleX(32), ScaleY(32));

      with Bitmap do

        begin

          Width:= ScaleX(32);

          Height:= ScaleY(32);

          Rect.Right:= ScaleX(32);

          Rect.Bottom:= ScaleY(32);

          Rect.Left:= ScaleX(0);

          Rect.Top:= ScaleY(0);

          Canvas.Brush.Color:= clBtnFace;

          Canvas.FillRect(Rect);

          DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, 3);

        end;

      Parent:= SupportPage.Surface;

    end;



  Str1:= TNewStaticText.Create(SupportPage);

  with Str1 do

    begin

      SetBounds(ScaleX(78), Steam.Top + ScaleY(20), ScaleX(349), ScaleY(32));

      Autosize:= False;

      WordWrap:= True;

      Caption:= ExpandConstant('{cm:INST_EXPR_STR}');

      Parent:= SupportPage.Surface;

    end;

  

  NoSteam:= TNewRadiobutton.Create(SupportPage);

  with NoSteam do

    begin

      SetBounds(ScaleX(20), Str1.Top + ScaleY(52), ScaleX(200), ScaleY(16));

      Font.Style:= [fsBold];

      Caption:= ExpandConstant('{cm:INST_CUST}');

      Parent:= SupportPage.Surface;

    end;

  

  hIcon:= ExtractIcon(GetModuleHandle(0), ExpandConstant('{sys}\shell32.dll'), 119);

  with TBitmapImage.Create(SupportPage) do

    begin

      SetBounds(ScaleX(36), NoSteam.Top + ScaleY(20), ScaleX(32), ScaleY(32));

      with Bitmap do

        begin

          Width:= ScaleX(32);

          Height:= ScaleY(32);

          Rect.Right:= ScaleX(32);

          Rect.Bottom:= ScaleY(32);

          Rect.Left:= ScaleX(0);

          Rect.Top:= ScaleY(0);

          Canvas.Brush.Color:= clBtnFace;

          Canvas.FillRect(Rect);

          DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, 3);

        end;

      Parent:= SupportPage.Surface;

    end;

  

  Str2:= TNewStaticText.Create(SupportPage);

  with Str2 do

    begin

      SetBounds(ScaleX(78), NoSteam.Top + ScaleY(20), ScaleX(349), ScaleY(50));

      Autosize:= False;

      WordWrap:= True;

      Caption:= ExpandConstant('{cm:INST_CUST_STR}');

      Parent:= SupportPage.Surface;

    end;

    

  Str3:= TNewStaticText.Create(SupportPage);

  with Str3 do

    begin

      SetBounds(ScaleX(36), ScaleY(221), ScaleX(381), ScaleY(16));

      Autosize:= False;

      WordWrap:= True;

      Caption:= ExpandConstant('{cm:NEXT}');

      Parent:= SupportPage.Surface;

    end;

end;



procedure CurPageChanged(CurPageID: Integer);

begin

  if CurPageID = wpSelectDir then

    begin

      if Steam.Checked = True then

        WizardForm.DirEdit.Text:= ExpandConstant('{reg:HKLM\SOFTWARE\Valve\Steam,InstallPath|{pf}\ARPS}')

      else WizardForm.DirEdit.Text:= ExpandConstant('{pf}\Half-Life 2');

    end;

end;



function ShouldSkipPage(PageID: Integer): Boolean;

begin

  if PageID = wpSelectProgramGroup then

    begin

      if Steam.Checked = True then

        Result:= True;

    end;

end;



procedure CurStepChanged(CurStep: TSetupStep);

begin

  if CurStep = ssDone then

    begin

      if Steam.Checked = True then

        begin

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

          RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9C9D1016-916D-40D5-B034-A0071759F1B7}_is1');

        end;

    end;

end;



function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo,

    MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;

var

  S: String;

begin

  S := S + ExpandConstant('{cm:INST_MODE}') + NewLine;

  if Steam.Checked = True then

    S := S + Space + ExpandConstant('{cm:INST_EXPR}') + NewLine + NewLine

  else

    S := S + Space + ExpandConstant('{cm:INST_CUST}') + NewLine + NewLine;

  S := S + MemoDirInfo + NewLine + Newline;

  S := S + MemoGroupInfo + NewLine + Newline;

  S := S + MemoTasksInfo + NewLine + NewLine;

  Result := S;

end;



{

 HINT: В режиме "Экспресс Режим" (Steam) может возникнуть ситуация, когда к примеру не хватает места

       на жестком диске, а страница выбора папки установки в "Экспресс Режиме" будет пропущена,

       в результате чего получится так, что установка сообщит о нехватке места уже в процессе

       копирования файлов.

}


[url=viewtopic.php?p=2804297#p2804297]»[/url]
		
	
	
А вы немогли бы ещё сделать так, чтобы у вариантов установки "Steam" и "NoSteam", можно было указать разные наборы компонентов, и разные параметры [Tasks]?
Аватара пользователя
A1EXXX

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение A1EXXX »

Цитата serg aka lain:



Можно, нужна сама библиотека "GameuxInstallHelper.dll".

Сам скрипт (Пример для юникод версии Inno):
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]




А как в нем указывать рейтинг (E, T, M, и т.д.) с комментариями нему, рекомендуемые/минимальные системные требования, и картинку которая там будет отображаться?



Аватара пользователя
Habetdin

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение Habetdin »

Bond01, это задается параметром DefaultGroupName=, в секции [SETUP]
Аватара пользователя
Bond01

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение Bond01 »

Цитата Raf-9600:



А как в нем указывать рейтинг (E, T, M, и т.д.) с комментариями нему, рекомендуемые/минимальные системные требования, и картинку которая там будет отображаться?
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]




Зта информация уже встроена в GDF.dll, или в экзешник игры, включая рейтинг и картинку.

Конкретно в Crysis'е, эту информацию содержит VistaEssentials.dll, а GameuxInstallHelper.dll только регистрирует игру в Game Explorer, ну и ещё в ней есть пара функций, для регистрации в Медиацентре и ещё какая-то мелочь.
Аватара пользователя
Habetdin

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение Habetdin »

Bond01, выложите скрин всего окна, а не только строки с той ошибкой
Аватара пользователя
Bond01

Re: [архив] Скрипты Inno Setup. Помощь и советы [часть 2]

Сообщение Bond01 »

Цитата Raf-9600:



А вы немогли бы ещё сделать так, чтобы у вариантов установки "Steam" и "NoSteam", можно было указать разные наборы компонентов, и разные параметры [Tasks]?
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]




Если это сложно реализовать, то есть второй вариант, сделать чтоб после выбора типа установки "Steam" и "NoSteam", закрывался текущий инсталлятор, и запускался другой инсталлятор, HL2-Steam.exe, или HL2-NoSteam.exe (для типов Steam и NoSteam соответственно). Только при условии что когда их запускает "главный" инсталлятор, отсутствовала первая страница, а если их вручную запустить, то она была.
Ответить

Вернуться в «Автоматическая установка приложений»