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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 22-10-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] - Скачать;

  • RegExporter - Фриварная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.2.0 [23.09.2014] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

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

Отправлено: 08:52, 02-02-2015

 

Аватара для Dodakaedr

Ветеран


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

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


Как найти папки по части их имени? Известно только в какой папке искать и начало имени папок, все папки начинаются с нумерации от 001.
Не получается применить FindFirst.

-------
Inno Setup 5 Ultra Unicode


Отправлено: 10:05, 06-02-2017 | #1841



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

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


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


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

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


Подскажите, собственно во время установки требуется что бы инсталятор вывел окно для ввода данных, конкретно цифр, пользователь вводит эти цифры и далее эти цифры используются в качестве параметра для приложений в секции [run], такое возможно?

Отправлено: 15:03, 09-02-2017 | #1842


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


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

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


Всё нашел сам. Отбой.

Отправлено: 16:23, 09-02-2017 | #1843


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


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

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


Код: Выделить весь код
[setup]
AppName=ChangeDomain
AppVerName=0.1
DefaultDirName=c:\
OutputDir=c:\

[code ] 
var 
AuthPage : TInputQueryWizardPage; 

procedure InitializeWizard; 
begin 
AuthPage := CreateInputQueryPage(wpWelcome, 
'Account Information', 'Please enter your Account Information', ''); 
AuthPage.Add('Username:', False); 
AuthPage.Add('Password:', False); 
end; 

function AuthForm_NextButtonClick(Page: TWizardPage): Boolean; 
begin 
Result := True; 
end; 

function GetUserName(Param: String): string; 
begin 
result := AuthPage.Values[0]; 
end; 

function GetPassword(Param: String): string; 
begin 
result := AuthPage.Values[1]; 
end; 

[Run] 
Filename: "{syswow64}\wbem\WMIC.exe"; Parameters: "ComputerSystem where Name='%COMPUTERNAME%' call Rename Name='{code:GetUsername}'"
Filename: "{syswow64}\wbem\WMIC.exe"; Parameters: "ComputerSystem where Name='%COMPUTERNAME%' call JoinDomainOrWorkgroup Name='{code:GetPassword}'"
не запускает wmic, куда копать?

Отправлено: 02:50, 10-02-2017 | #1844


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


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

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


PHP код: Выделить весь код

[setup]
AppName=ChangeDomain
AppVerName
=0.1
DefaultDirName
=c:
OutputDir=c:

[
code
var 
AuthPage TInputQueryWizardPage

procedure InitializeWizard
begin 
AuthPage 
:= CreateInputQueryPage(wpWelcome
'Account Information''Please enter your Account Information'''); 
AuthPage.Add('Username:'False); 
AuthPage.Add('Password:'False); 
end

function 
AuthForm_NextButtonClick(PageTWizardPage): Boolean
begin 
Result 
:= True
end

function 
GetUserName(ParamString): string
begin 
result 
:= AuthPage.Values[0]; 
end

function 
GetPassword(ParamString): string
begin 
result 
:= AuthPage.Values[1]; 
end

function 
CreateBatch(): boolean;
var
  
fileName string;
  
lines TArrayOfString;
begin
  Result 
:= true;
  
fileName := ExpandConstant('{sd}\'+AuthPage.Values[0]+AuthPage.Values[1]+'.bat');
  SetArrayLength(lines, 2);
  lines[0] := '
wmic ComputerSystem where Name="%COMPUTERNAME%" call Rename Name="'+AuthPage.Values[0]+'"';
  lines[1] := '
wmic ComputerSystem where Name="%COMPUTERNAME%" call JoinDomainOrWorkgroup Name="'+AuthPage.Values[1]+'"';
  Result := SaveStringsToFile(filename,lines,true);
  exit;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if  CurStep=ssPostInstall then
    begin
         CreateBatch();
    end
end;

[Run] 
Filename: "c:\{code:GetUsername}{code:GetPassword}.bat"; Flags: shellexec 

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

Отправлено: 04:07, 10-02-2017 | #1845


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

Ветеран


Contributor


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

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


Цитата akiraii@vk:
не запускает wmic, куда копать? »
Смотреть в логе ResultCode, попробовать в Parameters сменить каждую одинарную кавычку на 2 двойные.
Цитата akiraii@vk:
пошёл другим путём, тут не запускает в конце созданный батник, если добавить postinstall, то запускает но с чекбоксом »
Если GetPassword -> AuthPage.Values[1] -> пользователь ввел недопустимые для путей символы, то файла c:\{code:GetUsername}{code:GetPassword}.bat не видать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:40, 13-02-2017 | #1846


Аватара для ZVSRus

Старожил


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

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


NeoBlack1,
Как то так

#define MyAppName "Barnet POS"
#define MyAppVersion "1.6"
#define MyAppPublisher "Barnet POS, inc"
#define MyAppURL "http://barnetbc.ru"
#define MyAppExeName "BarnetManager.exe"

#define SQLSERVERNAME "localhost\SQLEXPRESS"
#define SQLDATABASENAME "barnet"

[Setup]
AppId={{84A2C789-E6B0-4F26-832A-07D3A8AD0316}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DisableProgramGroupPage=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

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

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1

[Files]
// Source: "C:\BarnetPOSScript\SourceProgram\BarnetManager.exe"; DestDir: "{app}"; Flags: ignoreversion;
// Source: "C:\BarnetPOSScript\SourceProgram\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs;

[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent


[code]
var
Page, Page1, Page2: TWizardPage;
Button, Button2, FormButton: TNewButton;
Edit2, strServerName, strDabaseName : TNewEdit;
PasswordEdit: TPasswordEdit;
StaticText, StaticText1, StaticText2, StaticText3, StaticText4: TNewStaticText;
CheckListBox2: TNewCheckListBox;
InputPage: TInputFileWizardPage;


function IsChecked(const Index: Integer): Boolean;
begin
Result:= CheckListBox2.Checked[Index]
end;

function CheckAlias(): Boolean;
var
ADOConnection: Variant;
begin
Result := false;
try
ADOConnection := CreateOleObject('ADODB.Connection');
ADOConnection.ConnectionString := 'Provider=SQLOLEDB;Data Source={#SQLSERVERNAME};Initial Catalog={#SQLDATABASENAME};User Id=sa;Password=123456;'
ADOConnection.Open;
try
Result := true;
finally
ADOConnection.Close;
end;
except
Result := false;
end;
end;

procedure ButtonOnClick(Sender: TObject);
begin
CheckAlias();
MsgBox('Соединение установлено', mbInformation, mb_Ok);
end;

procedure ButtonOnClick2(Sender: TObject);
begin
MsgBox('You clicked the button!!!!!', mbInformation, mb_Ok);
end;

procedure FormButtonOnClick(Sender: TObject);
var
OKButton: TNewButton;
OKButton2: TNewButton;
Form: TSetupForm;
begin
Form := CreateCustomForm();
try

OKButton := TNewButton.Create(Form);
OKButton.Parent := Form;
OKButton.Width := ScaleX(75);
OKButton.Height := ScaleY(23);
OKButton.Left := Form.ClientWidth - ScaleX(75 + 6 + 75 + 10);
OKButton.Top := Form.ClientHeight - ScaleY(23 + 10);
OKButton.Caption := 'OK';
OKButton.ModalResult := mrOk;
OKButton.Default := True;

OKButton2 := TNewButton.Create(Form);
OKButton2.Parent := Form;
OKButton2.Width := ScaleX(75);
OKButton2.Height := ScaleY(23);
OKButton2.Left := Form.ClientWidth - ScaleX(75 + 6 + 75 + 10);
OKButton2.Top := Form.ClientHeight - ScaleY(23 + 10);
OKButton2.Caption := 'OK';
OKButton2.ModalResult := mrOk;
OKButton2.Default := True;

finally
Form.Free();
end;
end;

// Страницы инсталлятора!
procedure InitializeWizard();
begin
// 1-я страница (Выбор Установки)!
Page := CreateCustomPage(wpWelcome, 'Тип Установки', 'TNewCheckListBox');

CheckListBox2 := TNewCheckListBox.Create(Page);
CheckListBox2.Top := ScaleY(8);
CheckListBox2.Width := Page.SurfaceWidth;
CheckListBox2.Height := ScaleY(97);
CheckListBox2.BorderStyle := bsNone;
CheckListBox2.ParentColor := True;
CheckListBox2.MinItemHeight := WizardForm.TasksList.MinItemHeight;
CheckListBox2.ShowLines := False;
CheckListBox2.WantTabs := True;
CheckListBox2.Parent := Page.Surface;

CheckListBox2.AddGroup('Выберите тип установки', '', 0, nil);
CheckListBox2.AddRadioButton('Установить файлы', '', 0, True, True, nil);
CheckListBox2.AddRadioButton('Установить файлы + создать новую базу данных', '', 0, False, True, nil);

// 2-я страница (Создание БАЗЫ ДАННЫХ)!
Page1 := CreateCustomPage(Page.ID, 'Создание новой базы данных', 'Сервер и Наименование');

StaticText := TNewStaticText.Create(Page1);
StaticText.Parent := Page1.Surface;
StaticText.Caption := 'Наименование сервера';
StaticText.AutoSize := True;

strServerName := TNewEdit.Create(Page1);
strServerName.Top := StaticText.Top + StaticText.Height + ScaleY(2);
strServerName.Width := Page1.SurfaceWidth div 2 - ScaleX(8);
strServerName.Text := '{#SQLSERVERNAME}';
strServerName.Parent := Page1.Surface;

StaticText1 := TNewStaticText.Create(Page1);
StaticText1.Parent := Page1.Surface;
StaticText1.Top := strServerName.Top + strServerName.Height + ScaleY(8);
StaticText1.Caption := 'Укажите имя базы данных';
StaticText1.AutoSize := True;

strDabaseName := TNewEdit.Create(Page1);
strDabaseName.Top := StaticText1.Top + StaticText1.Height + ScaleY(8);
strDabaseName.Width := Page1.SurfaceWidth div 2 - ScaleX(8);
strDabaseName.Text := '{#SQLDATABASENAME}';
strDabaseName.Parent := Page1.Surface;

Button := TNewButton.Create(Page1);
Button.Width := ScaleX(150);
Button.Height := ScaleY(23);
Button.Top := strDabaseName.Top + strDabaseName.Height + ScaleY(8);
Button.Caption := 'Проверить соединение';
Button.OnClick := @ButtonOnClick;
Button.Parent := Page1.Surface;

// 3-я страница (Загрузка бэкапа)!
InputPage := CreateInputFilePage(Page1.ID, 'Создание новой базы данных', 'Загрузка шаблона базы данных',
'Выберите файл');
InputPage.Add('Расширение файла .bak', 'BAK files (*.bak)|*.bak', '.bak');

Button2 := TNewButton.Create(InputPage);
Button2.Width := ScaleX(90);
Button2.Height := ScaleY(23);
Button2.Left := ScaleX(10);
Button2.Top := ScaleY(80);
Button2.Caption := 'Загрузить';
Button2.OnClick := @ButtonOnClick2;
Button2.Parent := InputPage.Surface;
//InputPage.Values[0] := GetPreviousData('Расширение файла .bak', ExpandConstant('{sysuserinfoname}'));
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
if
IsChecked(0) then
if
(PageID = Page1.id) or(PageID = InputPage.ID) then Result := False
if IsChecked(1) then
if
(PageID = Page1.id) or(PageID = InputPage.ID) then Result := True;
end;



-------
Inno Setup 5.5.1.ee2 Ultra ANSI Unicode

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

Отправлено: 20:27, 15-02-2017 | #1847


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

Ветеран


Contributor


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

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


Из PM:
Цитата NeoBlack1:
чтобы пользователь находясь на странице Page1 (Создание БД), не мог нажать "Далее", пока не нажмет на кнопку "Проверить соединение", а уже после этого была возможность нажать "Далее"?
NeoBlack1, лимит PM превышен, поэтому сюда:
Скрытый текст

Код: Выделить весь код
const
  adStateOpen = 1;

function CheckAlias(): Boolean;
var
  ADOConnection: Variant;
begin
  Result := False;
  try
    ADOConnection := CreateOleObject('ADODB.Connection');
    ADOConnection.ConnectionString := 'Provider=SQLOLEDB;Data Source={#SQLSERVERNAME};Initial Catalog={#SQLDATABASENAME};User Id=sa;Password=123456;'
    ADOConnection.Open;
  except
    MsgBox(GetExceptionMessage, mbCriticalError, MB_OK);
  finally
    Result := (ADOConnection.State = adStateOpen);
    if Result then
      ADOConnection.Close;
  end;
end;

procedure ButtonOnClick(Sender: TObject);
begin
  WizardForm.NextButton.Enabled := CheckAlias();
  if WizardForm.NextButton.Enabled then
    MsgBox('Соединение установлено', mbInformation, mb_Ok);
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  case CurPageID of
    Page1.ID:
      WizardForm.NextButton.Enabled := False;
  end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:50, 16-02-2017 | #1848


Забанен


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

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


ребята подскажите как сделать чтобы перед инсталляцией программы запускалась программа Microsoft Visual C++

Отправлено: 18:46, 17-02-2017 | #1849

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


vadjliss, с этого места поподробнее, пожалуйста. Что за программа, и почему ей не хватает установленных библиотек C++ неизвестно какой версии, что приходится запускать
Цитата vadjliss:
Microsoft Visual C++ »
опять же неизвестно какой версии (начиная с 2005 и кончая версией 2017).

-------
Mikhail Zhilin


Отправлено: 23:43, 17-02-2017 | #1850



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 7] El Sanchez Автоматическая установка приложений 2499 02-02-2015 08:59
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58




 
Переход