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

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

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

Сообщение Dark_Delphin »

Yury_Prizrak,

вот такой пример есть:


читать дальше »



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

[Setup]
AppName=Quake Live
AppVerName="Quake Live"
AppPublisher=Mio Dark Project
CreateAppDir=no
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl;
[Types]
Name: "full"; Description: "Все компоненты";
Name: "custom"; Description: "Выбрать компоненты"; Flags:  iscustom
[Components]
Name: "main"; Description: "Cтандартные файлы Quake Live"; Types: full custom; Flags: fixed
Name: "main2"; Description: "Премиум файлы Quake Live"; Types: full custom;
Name: "plug"; Description: "Плагин Quake Live"; Types: full custom;
Name: "browser"; Description: "Портативный Firefox под Quake Live"; Types: full custom;
Name: "manual"; Description: "Руководство и Награды"; Types: full custom;
Name: "anti"; Description: "Античит PunkBuster"; Types: full custom;
[CustomMessages]
HeaderLabelPage=Выберите тип вашего аккаунта
MyRadioCaption_1=Standart
MyRadioCaption_2=Premium / Pro
PageTextHeader=На этой странице Вы можете выбрать тип вашего аккаунта, который вы используете в игре.
MyText_1=Будут установлены файлы которые доступны для игроков без подписки.
MyText_2=Будут установлены файлы которые доступны для игроков с Premium/Pro подпиской.
[code]
var
  MyNewPage: TWizardPage;
  MyRadioBtn:ArraY[0..1]of TNewRadioButton;
procedure GetInstType;
begin
  WizardForm.ComponentsList.ItemEnabled[1]:= MyRadioBtn[1].Checked or not MyRadioBtn[0].Checked;
  WizardForm.ComponentsList.Checked[1]:=MyRadioBtn[1].Checked or not MyRadioBtn[0].Checked;
  WizardForm.ComponentsList.Checked[4]:=MyRadioBtn[1].Checked or not MyRadioBtn[0].Checked;
end;
procedure GetInstTypePage;
var
  i:integer;
begin
  MyNewPage := CreateCustomPage(wpWelcome,
  ExpandConstant('{cm:HeaderLabelPage}'), '');
  with TNewStaticText.Create(WizardForm) do
  begin
    Width := WizardForm.InnerNotebook.Width;
    Height := ScaleY(26);
    WordWrap := True;
    Caption := ExpandConstant('{cm:PageTextHeader}');
    Parent := MyNewPage.Surface;
  end;
  for i:=0 to 1 do
  begin
    MyRadioBtn[i] := TNewRadioButton.Create(WizardForm);
    with MyRadioBtn[i] do
    begin
      Parent := MyNewPage.Surface;
      Top := ScaleY(50+i*70);
      Width := ScaleX(150);
      case i of
        0: begin
          Caption := ExpandConstant('{cm:MyRadioCaption_1}');
          Checked := True;
        end;
        1:Caption := ExpandConstant('{cm:MyRadioCaption_2}');
      end;
    end;
    with TNewStaticText.Create(WizardForm) do
    begin
      Parent := MyNewPage.Surface;
      SetBounds(ScaleX(16),ScaleY(68+i*70),WizardForm.InnerNotebook.Width - ScaleX(60),ScaleY(26));
      WordWrap := True;
      case i of
        0:Caption := ExpandConstant('{cm:MyText_1}');
        1:Caption := ExpandConstant('{cm:MyText_2}');
      end;
    end;
  end;
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if (PageID <= wpSelectDir)
    and (PageID = wpReady)
      and (MyRadioBtn[1].Checked)
        then Result := True;
end;
procedure InitializeWizard();
begin
  GetInstTypePage;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID=wpSelectComponents then GetInstType;
end;

или на основе предыдущего, но попроще и как ты хотел


читать дальше »



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

#define MyAppName "test"
[Setup]
AppName={#MyAppName}
AppVerName={#MyAppName}
DefaultDirName={pf}\{#MyAppName}
UsePreviousAppDir=false
[Components]
Name: a; Description: 1;
Name: b; Description: 2;
Name: c; Description: 3;
Name: d; Description: 4;
Name: e; Description: 5;
[code]
var
  Page: TInputOptionWizardPage;
procedure InitializeWizard();
begin
  Page:= CreateInputOptionPage(wpSelectDir, 'тип установки', '', '', false, false);
	Page.Add('полная версия');
	WizardForm.TypesCombo.Hide;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectComponents then 
  begin
    WizardForm.ComponentsList.ItemEnabled[1]:= Page.Values[0];
    WizardForm.ComponentsList.ItemEnabled[4]:= Page.Values[0];
  end;
end;



detiedyatosla,

никак

родные лейблы не поддерживают прозрачность

пересоздавай и используй прозрачность

Скрипты Inno Setup. Помощь и советы [часть 5]
Аватара пользователя
Johny777

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

Сообщение Johny777 »

Цитата Yury_Prizrak:



Всем привет! Вопрос следующий(искал, чесно, чет не нашел - если было - плиз, дайте линку на ответ) - мне в инсталяции надо сделать чекбокс "полная версия" - его я сделал, а как "объяснить" инсталу, что если он не нажат - некоторые файлы устанавливать не надо? Т.е. есть например 5 файлов - 1 2 3 4 5, если чекбокс нажат - устанавливаем все, если нет - устанавливаем 1, 3, 4 а 2 и 5 нет. Заранее спасибо
Скрипты Inno Setup. Помощь и советы [часть 5]




Все, с этим разобрался, извините. Возник другой вопрос - мне надо проверять была ли предустановлена эта программа(а точнее есть ли конфиг файл этой программы) и если нет - завершать установку. Думал сделать через function InitializeSetup() но есть одно но - ExpandConstant('{app}\Configuration\Config.xml') - в этот момент {app} еще не определен. Может что подскажете? Заранее спасибо Изображение



Johny777, я сделал все еще проще:

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

[Files]

Source: {#AppSrcPathAdmin}\1; DestDir: {app}; Flags: ignoreversion  

Source: {#AppSrcPathAdmin}\2; DestDir: {app}; Flags: ignoreversion; Check: ServiceCheck

Source: {#AppSrcPathAdmin}\3; DestDir: {app}; Flags: ignoreversion

Source: {#AppSrcPathAdmin}\4; DestDir: {app}; Flags: ignoreversion

Source: {#AppSrcPathAdmin}\5; DestDir: {app}; Flags: ignoreversion; Check: ServiceCheck




 
 Код: [url=#][/url]
 [code]//Функция проверки чекбокса сервиса
	function ServiceCheck: Boolean;
begin
  Result := ServiceCheckBox.Checked;
end;
Аватара пользователя
FrozenProtector

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

Сообщение FrozenProtector »

Во время установки подгружаю нужные мне файлы через интернет. Для этих целей использую плагин Inno Tools Downloader.

Всё устраивает кроме одной мелочи - не могу русифицировать интерфейс загрузки. Плагин позволяет править ini файлы с языками, а потом подгружать их через команду ITD_LoadStrings. Но в результате вместо русских букв получаются иероглифы. Пробовал конвертировать ini в различные кодировки, но ничего не помогло. Функция ITD_SetString дает аналогичный результат.

Кто сталкивался, помогите ,пожалуйста, или подскажите аналогичные загрузчики файлов через интернет.
Аватара пользователя
t16bz

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

Сообщение t16bz »

Здравствуйте, кто знает скажите, что нужно пропивать в caption, чтобы на кнопке был такой символ?

http://i25.fastpic.ru/big/2012/0607/...2824d38005.png
Аватара пользователя
El Sanchez

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

Сообщение El Sanchez »

Вроде не потеме: делаю репак игры. Обязательно доставать ключи реестра от игры? Нельзя добавить свои ключи?
Аватара пользователя
Johny777

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

Сообщение Johny777 »

Цитата bond07:



Парни, большая просьба.

Путь установки: "C:\Program Files\Games\Selena6000

В реестре это выглядит так:

[HKEY_LOCAL_MACHINE\SOFTWARE\BaseGame\FileSystem]

"DataPath"="C:\Program Files\Games\Selena6000"

После установки программы нужно заменить "\Selena6000" на "\SELENA~1/>;"

То есть поменять название конечной папки, прога иначе не работает. Выручайте!
Скрипты Inno Setup. Помощь и советы [часть 5]




Только нюанс, насколько я знаю ДОСовские проги надо сокращать всё: c:\progra~1\Games\Selena~1

Выручаю:





Код:

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

Root: HKLM; SubKey: SOFTWARE\BaseGame\FileSystem; ValueType: string; ValueName: DataPath; ValueData: {code:GetShortName|{app}\Selena6000}; Flags: uninsdeletekeyifempty uninsdeletevalue deletevalue noerror






Цитата rasim933:



Вроде не потеме:
Скрипты Inno Setup. Помощь и советы [часть 5]




да, не по теме


Цитата rasim933:



Обязательно доставать ключи реестра от игры?
Скрипты Inno Setup. Помощь и советы [часть 5]




да, обязательно


Цитата rasim933:



Нельзя добавить свои ключи?
Скрипты Inno Setup. Помощь и советы [часть 5]




можно, добавляй
Аватара пользователя
t16bz

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

Сообщение t16bz »

Yury_Prizrak,

извини, но я не совсем врубаю чего тебе хочется


Цитата Yury_Prizrak:



и он все равно как то выковыривает значение папки при новой инсталляции...
Скрипты Inno Setup. Помощь и советы [часть 5]




так и будет

ставь хоть куда


Цитата Yury_Prizrak:



а нельзя без прописи в реестр?
Скрипты Inno Setup. Помощь и советы [часть 5]




можно конечно

вот так:

CreateUninstallRegKey=no

или так

Uninstallable=no

во втором случае деинсталятор не будет создаваться



в примере который я тебе дал при первой установке создаётся ключ реестра (ну и файл копируется соответственно)

по нему при повторном запуске находит путь инсталл

это выражается в эдите пути на странице выбора директории установки, те там будет путь туда, куда ты в прошлый раз установил (это можно и убрать, но смысл?. Тогда ставишь по новому в другую папку, а ищет в предыдущей в выдаёт сообщение)

и этот же путь считывается в процедуре инициализации, по этому пути ищет файл и выдаёт месседж бокс, если файл найден

ты хотел


Цитата Yury_Prizrak:



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




эта проверка есть
Цитата Yury_Prizrak:



а точнее есть ли конфиг файл этой программы
Скрипты Inno Setup. Помощь и советы [часть 5]




через ключ реестра сначала находим программу и там ищем файл. Реализовано


Цитата Yury_Prizrak:



и если нет - завершать установку
Скрипты Inno Setup. Помощь и советы [часть 5]




если файла нет и завершать, то это бред. Как же тогда его ставить?



Короче без ключа никак. Он всего один



или скажи поподробнее (на основе примера) как тебе нужно Изображение. Скорее всего я тебя недопонял

там видно будет!
Аватара пользователя
FrozenProtector

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

Сообщение FrozenProtector »

Цитата R.i.m.s.k.y.:



R.i.m.s.k.y.
Скрипты Inno Setup. Помощь и советы [часть 5]




Спасибо, получилось:

ValueData: {code:GetShortName|{app}}/>
Аватара пользователя
El Sanchez

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

Сообщение El Sanchez »

Можно ли сделать так, чтобы если выбран компонент Game\Pottable то в меню Пуск вообще не создавались ни ярлыки ни папки?
Аватара пользователя
R.i.m.s.k.y.

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

Сообщение R.i.m.s.k.y. »

El Sanchez, способ хороший но есть нюанс: в говносборках частенько вырезают шрифты

В каждой венде есть "Таблица символов", интересующие меня символы я смотрю там
Ответить

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