Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 5]

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

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1274
Благодарности: 1030


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: El Sanchez
Дата: 16-02-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2
Скрипты Inno Setup. Помощь и советы [часть 3]
Скрипты Inno Setup. Помощь и советы [часть 4]

Отправлено: 03:49, 21-05-2012

 

Забанен


Сообщения: 7
Благодарности: 2

Профиль | Цитировать


Привет всем!
Примеры смотрел, но это не то. Всё очень сложно. Код реализации xml большой и не понятный.

В общем задача такая
Имеется NetworkCfg.xml

Код: Выделить весь код
<?xml version="1.0" encoding="UTF-8"?>
<AllNetworkConfigs>
	<NetworkConfig isNDIS="0" canbeDelete="1" isPreferred="1">
		<ConfigFileName></ConfigFileName>
		<UserName></UserName>
		<Password></Password>
		<LoginNumber></LoginNumber>
		<AutoGetAPN>0</AutoGetAPN>
		<APN></APN>
		<AutoGetDNS>1</AutoGetDNS>
		<MainDNS>0.0.0.0</MainDNS>
		<StandbyDNS>0.0.0.0</StandbyDNS>
		<AutoGetPDP>1</AutoGetPDP>
		<PDPAddress>0.0.0.0</PDPAddress>
		<PDPType>IP</PDPType>
		<AuthType>PAP</AuthType>
		<AskUserAndPwd>0</AskUserAndPwd>
		<SaveUserAndPwd>0</SaveUserAndPwd>
	</NetworkConfig>
</AllNetworkConfigs>
Пояснения к xml
Код: Выделить весь код
<?xml version="1.0" encoding="UTF-8"?>				         - Создаётся по умолчанию;
<AllNetworkConfigs>						         - Создаётся по умолчанию;
	<NetworkConfig isNDIS="0" canbeDelete="1" isPreferred="1">       - Создаётся по умолчанию;
		<ConfigFileName></ConfigFileName>		         - Создаётся по умолчанию, но между <ConfigFileName></ConfigFileName> должно вводиться Название профиля; Например <ConfigFileName>MTS Internet</ConfigFileName>
		<UserName></UserName>				         - Создаётся по умолчанию, но между <UserName></UserName> должно вводиться Имя пользователя; Например <UserName>MTS</UserName>
		<Password></Password>				         - Создаётся по умолчанию, но между <Password></Password>  должен вводиться Пароль; Например <Password>mts</Password>
		<LoginNumber></LoginNumber>			         - Создаётся по умолчанию, но между <LoginNumber></LoginNumber>  должен вводиться номер дозвона; Например <LoginNumber>*99***1#</LoginNumber>
		<AutoGetAPN>0</AutoGetAPN>			         - Создаётся по умолчанию;
		<APN></APN>					         - Создаётся по умолчанию, но между <APN></APN> должна вводиться Точка доступа; Например <APN>internet.mts.ru</APN>
		<AutoGetDNS>1</AutoGetDNS>			         - Создаётся по умолчанию;
		<MainDNS>0.0.0.0</MainDNS>			         - Создаётся по умолчанию;
		<StandbyDNS>0.0.0.0</StandbyDNS>		         - Создаётся по умолчанию;
		<AutoGetPDP>1</AutoGetPDP>			         - Создаётся по умолчанию;
		<PDPAddress>0.0.0.0</PDPAddress>		         - Создаётся по умолчанию;
		<PDPType>IP</PDPType>				         - Создаётся по умолчанию;
		<AuthType>PAP</AuthType>			         - Создаётся по умолчанию;
		<AskUserAndPwd>0</AskUserAndPwd>		         - Создаётся по умолчанию;
		<SaveUserAndPwd>0</SaveUserAndPwd>		         - Создаётся по умолчанию;
	</NetworkConfig>					         - Создаётся по умолчанию;
</AllNetworkConfigs>						         - Создаётся по умолчанию;
Если быть точнее, этот NetworkCfg.xml должен создаваться в папке программы, т.е %ProgramFiles%\Моё Программное Обеспечение.
То что в коде "но между XXX должно вводиться Название XXX; Например XXX" это должно работать в инсталляторе "вводиться в окошках"

Вот код
Код: Выделить весь код
[Setup]
AppName=Моё Программное Обеспечение
AppVersion=1.5
;AppVerName=Моё Программное Обеспечение 1.5
DefaultDirName={pf}\Моё Программное Обеспечение
DefaultGroupName=Моё Программное Обеспечение
OutputDir=.
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: "Russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Icons]
Name: "{group}\{cm:UninstallProgram,Моё Программное Обеспечение}"; Filename: "{uninstallexe}"

[CustomMessages]
Russian.Caption=Настройка профиля по умолчанию
Russian.Description=Настройте профиль в соответствии с вашим оператором
Russian.SettingsProfile=Настройка профиля
Russian.Operator=Оператор:
Russian.UserName=Имя пользователя:
Russian.Password=Пароль:
Russian.NumberDial=Номер набора:
Russian.APN=Точка доступа:

[*Code]
var
  ISCustomPage1: TWizardPage;
  NewGroupBox1: TNewGroupBox;
  NewStaticText1: TNewStaticText;
  NewEdit1: TNewEdit;
  NewStaticText2: TNewStaticText;
  NewEdit2: TNewEdit;
  NewStaticText3: TNewStaticText;
  NewEdit3: TNewEdit;
  NewStaticText4: TNewStaticText;
  NewEdit4: TNewEdit;
  NewStaticText5: TNewStaticText;
  NewEdit5: TNewEdit;

procedure RedesignWizardForm;
begin
  ISCustomPage1 := CreateCustomPage(wpSelectDir, CustomMessage('Caption'), CustomMessage('Description'));

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

  NewGroupBox1 := TNewGroupBox.Create(WizardForm);
  with NewGroupBox1 do
  begin
    Name := 'NewGroupBox1';
    Parent := ISCustomPage1.Surface;
    Left := ScaleX(16);
    Top := ScaleY(8);
    Width := ScaleX(377);
    Height := ScaleY(209);
    Caption := CustomMessage('SettingsProfile');
  end;

  NewStaticText1 := TNewStaticText.Create(WizardForm);
  with NewStaticText1 do
  begin
    Name := 'NewStaticText1';
    Parent := NewGroupBox1;
    Caption := CustomMessage('Operator');
    Left := ScaleX(32);
    Top := ScaleY(31);
    Width := ScaleX(100);
    Height := ScaleY(14);
  end;

  NewEdit1 := TNewEdit.Create(WizardForm);
  with NewEdit1 do
  begin
    Name := 'NewEdit1';
    Parent := NewGroupBox1;
    Left := ScaleX(136);
    Top := ScaleY(28);
    Width := ScaleX(121);
    Height := ScaleY(21);
    Text := '';
  end;

  NewStaticText2 := TNewStaticText.Create(WizardForm);
  with NewStaticText2 do
  begin
    Name := 'NewStaticText2';
    Parent := NewGroupBox1;
    Caption := CustomMessage('UserName');
    Left := ScaleX(32);
    Top := ScaleY(57);
    Width := ScaleX(100);
    Height := ScaleY(14);
  end;

  NewEdit2 := TNewEdit.Create(WizardForm);
  with NewEdit2 do
  begin
    Name := 'NewEdit2';
    Parent := NewGroupBox1;
    Left := ScaleX(136);
    Top := ScaleY(53);
    Width := ScaleX(121);
    Height := ScaleY(21);
    Text := '';
  end;

  NewStaticText3 := TNewStaticText.Create(WizardForm);
  with NewStaticText3 do
  begin
    Name := 'NewStaticText3';
    Parent := NewGroupBox1;
    Caption := CustomMessage('Password');
    Left := ScaleX(32);
    Top := ScaleY(80);
    Width := ScaleX(100);
    Height := ScaleY(14);
  end;

  NewEdit3 := TNewEdit.Create(WizardForm);
  with NewEdit3 do
  begin
    Name := 'NewEdit3';
    Parent := NewGroupBox1;
    Left := ScaleX(136);
    Top := ScaleY(77);
    Width := ScaleX(121);
    Height := ScaleY(21);
    Text := '';
  end;

  NewStaticText4 := TNewStaticText.Create(WizardForm);
  with NewStaticText4 do
  begin
    Name := 'NewStaticText4';
    Parent := NewGroupBox1;
    Caption := CustomMessage('NumberDial');
    Left := ScaleX(32);
    Top := ScaleY(103);
    Width := ScaleX(100);
    Height := ScaleY(14);
  end;

  NewEdit4 := TNewEdit.Create(WizardForm);
  with NewEdit4 do
  begin
    Name := 'NewEdit4';
    Parent := NewGroupBox1;
    Left := ScaleX(136);
    Top := ScaleY(100);
    Width := ScaleX(121);
    Height := ScaleY(21);
    Text := '';
  end;

  NewStaticText5 := TNewStaticText.Create(WizardForm);
  with NewStaticText5 do
  begin
    Name := 'NewStaticText5';
    Parent := NewGroupBox1;
    Caption := CustomMessage('APN');
    Left := ScaleX(32);
    Top := ScaleY(127);
    Width := ScaleX(100);
    Height := ScaleY(14);
  end;

  NewEdit5 := TNewEdit.Create(WizardForm);
  with NewEdit5 do
  begin
    Name := 'NewEdit5';
    Parent := NewGroupBox1;
    Left := ScaleX(136);
    Top := ScaleY(124);
    Width := ScaleX(121);
    Height := ScaleY(21);
    Text := '';
  end;

  NewStaticText1.TabOrder := 0;
  NewEdit1.TabOrder := 1;
  NewStaticText2.TabOrder := 2;
  NewEdit2.TabOrder := 3;
  NewStaticText3.TabOrder := 4;
  NewEdit3.TabOrder := 5;
  NewStaticText4.TabOrder := 6;
  NewEdit4.TabOrder := 7;
  NewStaticText5.TabOrder := 8;
  NewEdit5.TabOrder := 9;

  NewGroupBox1.TabOrder := 0;
end;

procedure InitializeWizard();
begin
  RedesignWizardForm;
end;
Как это реализовать?

Отправлено: 15:03, 11-06-2012 | #241



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Dark_Delphin

Старожил


Сообщения: 238
Благодарности: 3

Профиль | Отправить PM | Цитировать


Всем привет)

Кто знает как сделать кнопочку "Язык инсталлятора"?

Скриншот:

-------
✘ _420.pp_✘


Отправлено: 15:10, 11-06-2012 | #242


Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


Цитата Dark_Delphin:
как сделать кнопочку "Язык инсталлятора" »
вот пример
остальное сам допили
так NextButton.Caption := GetIniString('Messages', 'ButtonNext', '', ExpandConstant('{src}\Russian.ini'));
где Russian.ini это переименованный Russian.isl (для теста я его гружу снаружи, рядом с инсталлом, хоя в конечном итоге ему дорога в temp)
Messages это секция ини
ButtonNext это назвние ключа (в файле ButtonNext= )
можно было бы и не из ини брать, а напрямую вписывать названия, но тогда будет много копипаста
можешь смело подредактировать и укоротить ини для своего инсталла

читать дальше »
Код: Выделить весь код
[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirName={pf}\MyApp

[  code]
var
  Flag: boolean;


procedure HideShow(Sender: TObject);
begin
  If not Flag then
  begin
  
    with WizardForm do
    begin
      NextButton.Caption := GetIniString('Messages', 'ButtonNext', '', ExpandConstant('{src}\Russian.ini'));
      case
        WizardForm.CurPageID of
          wpReady: NextButton.Caption := GetIniString('Messages', 'ButtonInstall', '', ExpandConstant('{src}\Russian.ini'));
          wpFinished: NextButton.Caption := GetIniString('Messages', 'ButtonFinish', '', ExpandConstant('{src}\Russian.ini'));
      end;
      BackButton.Caption := GetIniString('Messages', 'ButtonBack', '', ExpandConstant('{src}\Russian.ini'));
      CancelButton.Caption := GetIniString('Messages', 'ButtonCancel', '', ExpandConstant('{src}\Russian.ini'));
      WelcomeLabel1.Caption := 'Вас приветствует мастер установки {#SetupSetting("AppName")}';
      WelcomeLabel2.Caption := 'Программа установит {#SetupSetting("AppName")} на Ваш компьютер.%n%nРекомендуется закрыть все прочие приложения перед тем, как продолжить.'
    end;
    
    TButton(Sender).Caption:='En';
    Flag:= True;
  end
  
else
                                                                                                                         
  begin
  
    with WizardForm do
    begin
      NextButton.Caption := GetIniString('Messages', 'ButtonNext', '', ExpandConstant('{src}\English.ini'));
      case
        WizardForm.CurPageID of
          wpReady: NextButton.Caption := GetIniString('Messages', 'ButtonInstall', '', ExpandConstant('{src}\English.ini'));
          wpFinished: NextButton.Caption := GetIniString('Messages', 'ButtonFinish', '', ExpandConstant('{src}\English.ini'));
      end;
      BackButton.Caption := GetIniString('Messages', 'ButtonBack', '', ExpandConstant('{src}\English.ini'));
      CancelButton.Caption := GetIniString('Messages', 'ButtonCancel', '', ExpandConstant('{src}\English.ini'));
      WelcomeLabel1.Caption := 'Welcome to the {#SetupSetting("AppName")} Setup Wizard';
      WelcomeLabel2.Caption := GetIniString('Messages', 'WelcomeLabel2', '', ExpandConstant('{src}\English.ini'));
    end;
    
    TButton(Sender).Caption:='Ru';
    Flag:= False;
  end;
  
end;


procedure InitializeWizard();
begin

  with TButton.Create(WizardForm) do
  begin
    SetBounds(ScaleX(20), ScaleY(325), ScaleX(25), ScaleY(25));
    OnClick:= @HideShow;
    Caption:= 'En';
    Parent:= WizardForm;
  end;
  Flag:= True;
  
end;


(хотя считаю, что эта кнопка чистой воды понт, тк смысл = 0, если ты уже выбрал язык перед запуском инсталла или он выбрался автоматически в зависимости от настроек )

Последний раз редактировалось Johny777, 11-06-2012 в 23:06.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:14, 11-06-2012 | #243


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1274
Благодарности: 1030

Профиль | Отправить PM | Цитировать


Цитата Неадекватный:
NetworkCfg.xml должен создаваться в папке программы, т.е %ProgramFiles%\Моё Программное Обеспечение.
То что в коде "но между XXX должно вводиться Название XXX; Например XXX" это должно работать в инсталляторе "вводиться в окошках" »
Неадекватный, способов несколько.
1. Использовать уже готовый шаблон без значений NetworkCfg.xml (как в вашем посте, первый код) и методы объекта XMLDOM:
читать дальше »

Код: Выделить весь код
[Files]
Source: NetworkCfg.xml; Flags: dontcopy

[code]
procedure CreateNetworkCfg;
var
    objXMLDoc: Variant;
begin
    objXMLDoc := CreateOleObject('Microsoft.XMLDOM');
    objXMLDoc.async := False;
    objXMLDoc.load(ExpandConstant('{tmp}\networkcfg.xml'));
    if objXMLDoc.parseError.errorCode <> 0 then Exit;
    objXMLDoc.selectSingleNode('//AllNetworkConfigs/NetworkConfig/ConfigFileName').Text := NewEdit1.Text;
    objXMLDoc.selectSingleNode('//AllNetworkConfigs/NetworkConfig/UserName').Text := NewEdit2.Text;
    objXMLDoc.selectSingleNode('//AllNetworkConfigs/NetworkConfig/Password').Text := NewEdit3.Text;
    objXMLDoc.selectSingleNode('//AllNetworkConfigs/NetworkConfig/LoginNumber').Text := NewEdit4.Text;
    objXMLDoc.selectSingleNode('//AllNetworkConfigs/NetworkConfig/APN').Text := NewEdit5.Text;
    objXMLDoc.save(ExpandConstant('{app}\networkcfg.xml'));
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
    case CurStep of
        ssPostInstall: CreateNetworkCfg;
    end;
end;

procedure InitializeWizard();
begin
    ExtractTemporaryFile('networkcfg.xml');
    RedesignWizardForm;
end;


2. Использовать SaveStringToFile с длинной строкой.
читать дальше »

Код: Выделить весь код
[code]
procedure CreateNetworkCfg;
begin
    SaveStringToFile(
        ExpandConstant('{app}\networkcfg.xml'),
        '<?xml version="1.0" encoding="UTF-8"?>'#13#10 +
        '<AllNetworkConfigs>'#13#10#9 +
        '<NetworkConfig isNDIS="0" canbeDelete="1" isPreferred="1">'#13#10#9#9 +
        '<ConfigFileName>' + NewEdit1.Text + '</ConfigFileName>'#13#10#9#9 +
        '<UserName>' + NewEdit2.Text + '</UserName>'#13#10#9#9 +
        '<Password>' + NewEdit3.Text + '</Password>'#13#10#9#9 +
        '<LoginNumber>' + NewEdit4.Text + '</LoginNumber>'#13#10#9#9 +
        '<AutoGetAPN>0</AutoGetAPN>'#13#10#9#9 +
        '<APN>' + NewEdit5.Text + '</APN>'#13#10#9#9 +
        '<AutoGetDNS>1</AutoGetDNS>'#13#10#9#9 +
        '<MainDNS>0.0.0.0</MainDNS>'#13#10#9#9 +
        '<StandbyDNS>0.0.0.0</StandbyDNS>'#13#10#9#9 +
        '<AutoGetPDP>1</AutoGetPDP>'#13#10#9#9 +
        '<PDPAddress>0.0.0.0</PDPAddress>'#13#10#9#9 +
        '<PDPType>IP</PDPType>'#13#10#9#9 +
        '<AuthType>PAP</AuthType>'#13#10#9#9 +
        '<AskUserAndPwd>0</AskUserAndPwd>'#13#10#9#9 +
        '<SaveUserAndPwd>0</SaveUserAndPwd>'#13#10#9 +
        '</NetworkConfig>'#13#10 +
        '</AllNetworkConfigs>'
        , False
    );
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
    case CurStep of
        ssPostInstall: CreateNetworkCfg;
    end;
end;

Последний раз редактировалось El Sanchez, 13-06-2012 в 17:19. Причина: fix

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:27, 11-06-2012 | #244


Аватара для R.i.m.s.k.y.

Ветеран


Сообщения: 1640
Благодарности: 536

Профиль | Отправить PM | Цитировать


El Sanchez, что такое objXMLDoc? стандартная функция? или какой-то модуль?

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 22:02, 11-06-2012 | #245


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1274
Благодарности: 1030

Профиль | Отправить PM | Цитировать


Цитата R.i.m.s.k.y.:
что такое objXMLDoc? стандартная функция? или какой-то модуль? »
R.i.m.s.k.y., переменная типа Variant, результат функции CreateOleObject, короче, ссылка на объект.

Отправлено: 22:06, 11-06-2012 | #246


Забанен


Сообщения: 7
Благодарности: 2

Профиль | Цитировать


Цитата El Sanchez:
способов несколько. »
Код: Выделить весь код
[Setup]
AppName=Моё Программное Обеспечение
AppVersion=1.5
;AppVerName=Моё Программное Обеспечение 1.5
DefaultDirName={pf}\Моё Программное Обеспечение
DefaultGroupName=Моё Программное Обеспечение
OutputDir=.
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: "Russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Icons]
Name: "{group}\{cm:UninstallProgram,Моё Программное Обеспечение}"; Filename: "{uninstallexe}"

[CustomMessages]
Russian.Caption=Настройка профиля по умолчанию
Russian.Description=Настройте профиль в соответствии с вашим оператором
Russian.SettingsProfile=Настройка профиля
Russian.Operator=Оператор:
Russian.UserName=Имя пользователя:
Russian.Password=Пароль:
Russian.NumberDial=Номер набора:
Russian.APN=Точка доступа:

[*Code]
var
  ISCustomPage1: TWizardPage;
  NewGroupBox1: TNewGroupBox;
  NewStaticText1: TNewStaticText;
  NewEdit1: TNewEdit;
  NewStaticText2: TNewStaticText;
  NewEdit2: TNewEdit;
  NewStaticText3: TNewStaticText;
  NewEdit3: TNewEdit;
  NewStaticText4: TNewStaticText;
  NewEdit4: TNewEdit;
  NewStaticText5: TNewStaticText;
  NewEdit5: TNewEdit;

procedure RedesignWizardForm;
begin
  ISCustomPage1 := CreateCustomPage(wpSelectDir, CustomMessage('Caption'), CustomMessage('Description'));

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

  NewGroupBox1 := TNewGroupBox.Create(WizardForm);
  with NewGroupBox1 do
  begin
    Name := 'NewGroupBox1';
    Parent := ISCustomPage1.Surface;
    Left := ScaleX(16);
    Top := ScaleY(8);
    Width := ScaleX(377);
    Height := ScaleY(209);
    Caption := CustomMessage('SettingsProfile');
  end;

  NewStaticText1 := TNewStaticText.Create(WizardForm);
  with NewStaticText1 do
  begin
    Name := 'NewStaticText1';
    Parent := NewGroupBox1;
    Caption := CustomMessage('Operator');
    Left := ScaleX(32);
    Top := ScaleY(31);
    Width := ScaleX(100);
    Height := ScaleY(14);
  end;

  NewEdit1 := TNewEdit.Create(WizardForm);
  with NewEdit1 do
  begin
    Name := 'NewEdit1';
    Parent := NewGroupBox1;
    Left := ScaleX(136);
    Top := ScaleY(28);
    Width := ScaleX(121);
    Height := ScaleY(21);
    Text := '';
  end;

  NewStaticText2 := TNewStaticText.Create(WizardForm);
  with NewStaticText2 do
  begin
    Name := 'NewStaticText2';
    Parent := NewGroupBox1;
    Caption := CustomMessage('UserName');
    Left := ScaleX(32);
    Top := ScaleY(57);
    Width := ScaleX(100);
    Height := ScaleY(14);
  end;

  NewEdit2 := TNewEdit.Create(WizardForm);
  with NewEdit2 do
  begin
    Name := 'NewEdit2';
    Parent := NewGroupBox1;
    Left := ScaleX(136);
    Top := ScaleY(53);
    Width := ScaleX(121);
    Height := ScaleY(21);
    Text := '';
  end;

  NewStaticText3 := TNewStaticText.Create(WizardForm);
  with NewStaticText3 do
  begin
    Name := 'NewStaticText3';
    Parent := NewGroupBox1;
    Caption := CustomMessage('Password');
    Left := ScaleX(32);
    Top := ScaleY(80);
    Width := ScaleX(100);
    Height := ScaleY(14);
  end;

  NewEdit3 := TNewEdit.Create(WizardForm);
  with NewEdit3 do
  begin
    Name := 'NewEdit3';
    Parent := NewGroupBox1;
    Left := ScaleX(136);
    Top := ScaleY(77);
    Width := ScaleX(121);
    Height := ScaleY(21);
    Text := '';
  end;

  NewStaticText4 := TNewStaticText.Create(WizardForm);
  with NewStaticText4 do
  begin
    Name := 'NewStaticText4';
    Parent := NewGroupBox1;
    Caption := CustomMessage('NumberDial');
    Left := ScaleX(32);
    Top := ScaleY(103);
    Width := ScaleX(100);
    Height := ScaleY(14);
  end;

  NewEdit4 := TNewEdit.Create(WizardForm);
  with NewEdit4 do
  begin
    Name := 'NewEdit4';
    Parent := NewGroupBox1;
    Left := ScaleX(136);
    Top := ScaleY(100);
    Width := ScaleX(121);
    Height := ScaleY(21);
    Text := '';
  end;

  NewStaticText5 := TNewStaticText.Create(WizardForm);
  with NewStaticText5 do
  begin
    Name := 'NewStaticText5';
    Parent := NewGroupBox1;
    Caption := CustomMessage('APN');
    Left := ScaleX(32);
    Top := ScaleY(127);
    Width := ScaleX(100);
    Height := ScaleY(14);
  end;

  NewEdit5 := TNewEdit.Create(WizardForm);
  with NewEdit5 do
  begin
    Name := 'NewEdit5';
    Parent := NewGroupBox1;
    Left := ScaleX(136);
    Top := ScaleY(124);
    Width := ScaleX(121);
    Height := ScaleY(21);
    Text := '';
  end;

  NewStaticText1.TabOrder := 0;
  NewEdit1.TabOrder := 1;
  NewStaticText2.TabOrder := 2;
  NewEdit2.TabOrder := 3;
  NewStaticText3.TabOrder := 4;
  NewEdit3.TabOrder := 5;
  NewStaticText4.TabOrder := 6;
  NewEdit4.TabOrder := 7;
  NewStaticText5.TabOrder := 8;
  NewEdit5.TabOrder := 9;

  NewGroupBox1.TabOrder := 0;
end;

procedure InitializeWizard();
begin
  RedesignWizardForm;
end;
Т.е один из способов нужно вписать в код выше так?

Последний раз редактировалось Неадекватный, 12-06-2012 в 06:30.


Отправлено: 06:16, 12-06-2012 | #247


Аватара для Mafia_forever

Новый участник


Сообщения: 47
Благодарности: 1

Профиль | Отправить PM | Цитировать


как сделать чтоб инсталл выводил окошко . идет подготовка к установке и отображения точного прогресса . в прогресс баре или в процентах . плиз хелп .

Отправлено: 08:29, 12-06-2012 | #248


Аватара для alert30

Ветеран


Сообщения: 1088
Благодарности: 162

Профиль | Отправить PM | Цитировать


Mafia_forever, по моему должен по-умолчанию производится.

Отправлено: 08:32, 12-06-2012 | #249


Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


Неадекватный,
небольшой апдейт к твоему скрипту
блокировка/разблокировка кнопки "далее" в зависимости от того есть ли текст во всех эдитах
припиши всем эдитам OnChange := @EditsOnChange; *(или в дизайнере во вкладке события назначь)

читать дальше »
Код: Выделить весь код
procedure EditsOnChange(Sender: TObject);
begin
  WizardForm.NextButton.Enabled := (NewEdit1.Text <> '') and (NewEdit2.Text <> '') and (NewEdit3.Text <> '')  and (NewEdit4.Text <> '')and (NewEdit5.Text <> '');
end;

procedure RedesignWizardForm;
begin

 ....

  NewEdit1 := TNewEdit.Create(WizardForm);
  with NewEdit1 do
  begin

    ....
    OnChange := @EditsOnChange;  /// пример
  end;

 ....

end;

procedure CurPageChanged(CurPageID: Integer); 
begin
    case CurPageID of
        ISCustomPage1.ID: WizardForm.NextButton.Enabled := (NewEdit1.Text <> '') and (NewEdit2.Text <> '') and (NewEdit3.Text <> '')  and (NewEdit4.Text <> '')and (NewEdit5.Text <> '');
    end;
end;


хотя не знаю являются ли твои настройки xml опициональными

полный код:

читать дальше »
Код: Выделить весь код
[Setup]
AppName=Моё Программное Обеспечение
AppVersion=1.5
;AppVerName=Моё Программное Обеспечение 1.5
DefaultDirName={pf}\Моё Программное Обеспечение
DefaultGroupName=Моё Программное Обеспечение
OutputDir=.
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: "Russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Icons]
Name: "{group}\{cm:UninstallProgram,Моё Программное Обеспечение}"; Filename: "{uninstallexe}"

[CustomMessages]
Russian.Caption=Настройка профиля по умолчанию
Russian.Description=Настройте профиль в соответствии с вашим оператором
Russian.SettingsProfile=Настройка профиля
Russian.Operator=Оператор:
Russian.UserName=Имя пользователя:
Russian.Password=Пароль:
Russian.NumberDial=Номер набора:
Russian.APN=Точка доступа:


[  code]
var
  ISCustomPage1: TWizardPage;
  NewGroupBox1: TNewGroupBox;
  NewStaticText1: TNewStaticText;
  NewEdit1: TNewEdit;
  NewStaticText2: TNewStaticText;
  NewEdit2: TNewEdit;
  NewStaticText3: TNewStaticText;
  NewEdit3: TNewEdit;
  NewStaticText4: TNewStaticText;
  NewEdit4: TNewEdit;
  NewStaticText5: TNewStaticText;
  NewEdit5: TNewEdit;



procedure EditsOnChange(Sender: TObject);
begin
  WizardForm.NextButton.Enabled := (NewEdit1.Text <> '') and (NewEdit2.Text <> '') and (NewEdit3.Text <> '')  and (NewEdit4.Text <> '')and (NewEdit5.Text <> '');
end;


procedure RedesignWizardForm;
begin
  ISCustomPage1 := CreateCustomPage(wpSelectDir, CustomMessage('Caption'), CustomMessage('Description'));

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

  NewGroupBox1 := TNewGroupBox.Create(WizardForm);
  with NewGroupBox1 do
  begin
    Name := 'NewGroupBox1';
    Parent := ISCustomPage1.Surface;
    Left := ScaleX(16);
    Top := ScaleY(8);
    Width := ScaleX(377);
    Height := ScaleY(209);
    Caption := CustomMessage('SettingsProfile');

  end;

  NewStaticText1 := TNewStaticText.Create(WizardForm);
  with NewStaticText1 do
  begin
    Name := 'NewStaticText1';
    Parent := NewGroupBox1;
    Caption := CustomMessage('Operator');
    Left := ScaleX(32);
    Top := ScaleY(31);
    Width := ScaleX(100);
    Height := ScaleY(14);
  end;

  NewEdit1 := TNewEdit.Create(WizardForm);
  with NewEdit1 do
  begin
    Name := 'NewEdit1';
    Parent := NewGroupBox1;
    Left := ScaleX(136);
    Top := ScaleY(28);
    Width := ScaleX(121);
    Height := ScaleY(21);
    Text := '';
    OnChange := @EditsOnChange;
  end;

  NewStaticText2 := TNewStaticText.Create(WizardForm);
  with NewStaticText2 do
  begin
    Name := 'NewStaticText2';
    Parent := NewGroupBox1;
    Caption := CustomMessage('UserName');
    Left := ScaleX(32);
    Top := ScaleY(57);
    Width := ScaleX(100);
    Height := ScaleY(14);
  end;

  NewEdit2 := TNewEdit.Create(WizardForm);
  with NewEdit2 do
  begin
    Name := 'NewEdit2';
    Parent := NewGroupBox1;
    Left := ScaleX(136);
    Top := ScaleY(53);
    Width := ScaleX(121);
    Height := ScaleY(21);
    Text := '';
    OnChange := @EditsOnChange;
  end;

  NewStaticText3 := TNewStaticText.Create(WizardForm);
  with NewStaticText3 do
  begin
    Name := 'NewStaticText3';
    Parent := NewGroupBox1;
    Caption := CustomMessage('Password');
    Left := ScaleX(32);
    Top := ScaleY(80);
    Width := ScaleX(100);
    Height := ScaleY(14);
  end;

  NewEdit3 := TNewEdit.Create(WizardForm);
  with NewEdit3 do
  begin
    Name := 'NewEdit3';
    Parent := NewGroupBox1;
    Left := ScaleX(136);
    Top := ScaleY(77);
    Width := ScaleX(121);
    Height := ScaleY(21);
    Text := '';
    OnChange := @EditsOnChange;
  end;

  NewStaticText4 := TNewStaticText.Create(WizardForm);
  with NewStaticText4 do
  begin
    Name := 'NewStaticText4';
    Parent := NewGroupBox1;
    Caption := CustomMessage('NumberDial');
    Left := ScaleX(32);
    Top := ScaleY(103);
    Width := ScaleX(100);
    Height := ScaleY(14);
  end;

  NewEdit4 := TNewEdit.Create(WizardForm);
  with NewEdit4 do
  begin
    Name := 'NewEdit4';
    Parent := NewGroupBox1;
    Left := ScaleX(136);
    Top := ScaleY(100);
    Width := ScaleX(121);
    Height := ScaleY(21);
    Text := '';
    OnChange := @EditsOnChange;
  end;

  NewStaticText5 := TNewStaticText.Create(WizardForm);
  with NewStaticText5 do
  begin
    Name := 'NewStaticText5';
    Parent := NewGroupBox1;
    Caption := CustomMessage('APN');
    Left := ScaleX(32);
    Top := ScaleY(127);
    Width := ScaleX(100);
    Height := ScaleY(14);
  end;

  NewEdit5 := TNewEdit.Create(WizardForm);
  with NewEdit5 do
  begin
    Name := 'NewEdit5';
    Parent := NewGroupBox1;
    Left := ScaleX(136);
    Top := ScaleY(124);
    Width := ScaleX(121);
    Height := ScaleY(21);
    Text := '';
    OnChange := @EditsOnChange;
  end;

  NewStaticText1.TabOrder := 0;
  NewEdit1.TabOrder := 1;
  NewStaticText2.TabOrder := 2;
  NewEdit2.TabOrder := 3;
  NewStaticText3.TabOrder := 4;
  NewEdit3.TabOrder := 5;
  NewStaticText4.TabOrder := 6;
  NewEdit4.TabOrder := 7;
  NewStaticText5.TabOrder := 8;
  NewEdit5.TabOrder := 9;

  NewGroupBox1.TabOrder := 0;
end;

procedure InitializeWizard();
begin
    RedesignWizardForm;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
    case CurPageID of
        ISCustomPage1.ID: WizardForm.NextButton.Enabled := (NewEdit1.Text <> '') and (NewEdit2.Text <> '') and (NewEdit3.Text <> '')  and (NewEdit4.Text <> '')and (NewEdit5.Text <> '');
    end;
end;

Последний раз редактировалось Johny777, 12-06-2012 в 11:00.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:22, 12-06-2012 | #250



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 5]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход