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

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

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

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

Ветеран


Contributor


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


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

Профиль | Отправить 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

 

Аватара для ispolin

Ветеран


Автор проектов


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

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


Подскажите пожалуйста что нужно дописать в скрипте, чтобы заполнились пустые поля?
на данный момент в скрипте есть строки
[Setup]
AppName=Soft Pack
AppVersion=2016
AppVerName=Soft Pack
VersionInfoVersion=2016
VersionInfoCompany=ispolin
VersionInfoCopyright=ispolin
AppCopyright=ispolin

-------


Отправлено: 14:30, 29-03-2016 | #1461



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

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


Аватара для AlexanderSergeev

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


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

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


Цитата ispolin:
Подскажите пожалуйста что нужно дописать в скрипте, чтобы заполнились пустые поля? »
ispolin, вот попробуйте так должно работать:
Код: Выделить весь код
#define MyAppName "Название продукта"
#define MyAppVersion "Версия продукта"

[Setup]
AppName={#MyAppName}
AppVerName={#MyAppName}
DefaultDirName=D:\{#MyAppName}
DefaultGroupName={#MyAppName}

-------
Inno Setup Compiler ver. 5.5.1ee2(u)


Последний раз редактировалось AlexanderSergeev, 29-03-2016 в 16:24.

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

Отправлено: 16:02, 29-03-2016 | #1462


Аватара для ZVSRus

Старожил


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

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


Цитата ispolin:
Подскажите пожалуйста что нужно дописать в скрипте, чтобы заполнились пустые поля?
из Справки

Код: Выделить весь код
 VersionInfoProductVersion=  Значение из 4 чисел, разделенных точками. Задает двоичное значение версии файла инсталлятора.
 VersionInfoProductName=  AppName, если AppName не содержит констант (иначе будет пустая строка). Определяет значение названия продукта
Пример

Код: Выделить весь код
 VersionInfoVersion=4.7.6.1
 VersionInfoProductVersion=4.7.6.1
 VersionInfoCompany=ObviousIdea
 VersionInfoDescription=RePack (& Portable) by ZVSRus
 VersionInfoProductName=Light Image Resizer
 VersionInfoCopyright=Copyright © 2011-2015 ObviousIdea SARL

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


Последний раз редактировалось ZVSRus, 29-03-2016 в 16:30.

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

Отправлено: 16:22, 29-03-2016 | #1463


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


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

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


Цитата ZVSRus:
Мне нужно, что бы установщик СНАЧАЛА сохранял в архив файлы, которые уже лежат на компе, а только потом производилась установка
Другими словами, перед установкой нужно сделать Backup файлов которые лежат на компе.
В справке как сделать Backup (Создать резервную копию оригинальных файлов) я насчитал около 10 примеров.
Где искать смотри на картинке. »
и

Цитата ZVSRus:
Буду благодарен хотя бы за ссылки на 5 примеров
Скрытый текст
Скрытый текст
Скрытый текст »
не один из скрипов не работает... не знаю почему так, вся надежда на вас господа

Прилагаю пример своего "генерального кода", указал только 1 файлик, ну а для примера больше и не надо)

Скрытый текст
; Script generated by the Inno Script Studio Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Los"
#define MyAppExeName "Daemon.exe"
#define MyAppVersion "1.0"
#define los "C:\Users\v.pon\Desktop\ARXIV"
;#define Svc "..\los\Svc\"
;#define BackupDir "..\Backup";


[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
;(To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{4B52DA29-1987-41EB-A7E8-87572C794301}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
DefaultDirName={#MyAppName}
DefaultGroupName={#MyAppName}
UninstallFilesDir= "C:\Users\v.pon\Desktop\backup"
;DefaultDirName={pf}\My Program
;OutputDir=C:\Users\v.pon\Desktop\backup //куда будет запихиватся установщик

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

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Components]
;Name: "arch"; Description: "1.7z\2.7z";
Name: "Svc"; Description: " Установить Svc "; Flags: checkablealone exclusive
Name: "Coll"; Description: "Установить Los "; Flags: checkablealone exclusive

[Run]
;Source: "C:\Users\v.pon\Desktop\ARXIV\2.bat"; Flags:

[Files]

Source: "{#Los}\*.xml"; DestDir: "{app}\Los\"; Flags: onlyifdoesntexist ;Components: Coll


[Icons]
;Name: "{group}\My Program"; Filename: "{app}\Svc"; Components: Svc ;
;Name: "{group}\los"; Filename: "{app}\Installer"; Components: Coll;
;Name: "{group}\los"; Filename: "{app}\"; Components: Coll;

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
Filename: "msiexec"; Parameters: "/i {tmp}\mysql-connector-net-6.9.6.msi /qb /norestart REBOOT=ReallySuppress"; WorkingDir: "{tmp}"; Description: "MySql Connector"; StatusMsg: "MySql Connector"

[Dirs]
Name: "C:\Users\v.pon\Desktop\backup"

[code]
var
MyTask: TCheckBox;

function MoveFile(const srcFile, destFile: PChar): Integer; external 'MoveFileA@kernel32.dll stdcall';

procedure CurStepChanged(CurStep: TSetupStep);
var
FindFiles: TFindRec;
i: integer;
MyFiles: array of string;
MyDir, BackDir: string;
begin
if CurStep=ssInstall then begin
if MyTask.Checked then begin
MyFiles:=['*']; // указать файлы или маски нужные для бакупа через запятую. при указании маски '*' бакупятся все файлы с вложенными папками
MyDir:=ExpandConstant('C:\Users\v.pon\Desktop\los'); //папка откуда бакупить
BackDir:=ExpandConstant('C:\Users\v.pon\Desktop\Los\backup'); // папка куда бакупить
for i:=0 to GetArrayLength(MyFiles)-1 do
begin
if FindFirst(MyDir+MyFiles[i], FindFiles) then begin
repeat
if not DirExists(BackDir) then begin
CreateDir(BackDir);
end;
MoveFile(MyDir+FindFiles.Name, BackDir+FindFiles.Name);
until not FindNext(FindFiles);
FindClose(FindFiles);
end;
end;
end;
end;
end;

procedure InitializeWizard();
begin
MyTask:=TCheckBox.Create(WizardForm);
with MyTask do
begin
Parent:=WizardForm.SelectDirPage;
Caption:='Сделать Бэкап';
Left:=ScaleX(0);
Top:=ScaleY(100);
Width:=ScaleX(400);
Height:=ScaleY(15);
TabOrder:=0;
Checked:=True;
end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
FindFiles: TFindRec;
MyDir, BackDir: string;
begin
if CurUninstallStep = usPostUninstall then begin
MyDir:=ExpandConstant('{app}'+'C:\Users\v.pon\Desktop\backup222'); //папка куда возвращать файлы
BackDir:=ExpandConstant('{app}'+'C:\Users\v.pon\Desktop\backup'); // папка откуда брать файлы
if DirExists(BackDir) then begin
if MsgBox('Восстановить данные из бэкапа?', mbConfirmation, MB_YESNO) = IDYES then begin
if FindFirst(BackDir+'*', FindFiles) then begin
repeat
MoveFile(BackDir+FindFiles.Name, MyDir+FindFiles.Name);
until not FindNext(FindFiles);
FindClose(FindFiles);
RemoveDir(BackDir);
end;
end;
end;
end;
end;

Последний раз редактировалось vovann01, 30-03-2016 в 12:39.


Отправлено: 12:28, 30-03-2016 | #1464


Аватара для ZVSRus

Старожил


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

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


Цитата vovann01:
не один из скрипов не работает... не знаю почему так
Пример из Справки (Один из 3 примеров выложенным ранее, чуть-чуть подправил).
Работает нормально, и бекапит и возвращает сбекапенные файлы на место при удалении новых файлов.
Для примера взялась папка с картинками

В вашем примере в секции Setup в директиве DefaultDirName= нет пути куда устанавливать, есть только имя программы.
Директива должна выглядеть так DefaultDirName={pf}{#MyAppName} или пропиши вручную так C:\Users\v.pon\Desktop\los

Скрытый текст

Цитата:
[Setup]
AppName=MyProg
AppVerName=MyProg
DefaultDirName={pf}\MyProg
DefaultGroupName=MyProg
OutputDir=.

[Files]
Source: "D:\Files\*"; DestDir: "{app}"; Flags: ignoreversion

[code]
var
MyTask: TCheckBox;

function MoveFile(const srcFile, destFile: PChar): Integer; external 'MoveFileA@kernel32.dll stdcall';

procedure CurStepChanged(CurStep: TSetupStep);
var
FindFiles: TFindRec;
i: integer;
MyFiles: array of string;
MyDir, BackDir: string;
begin
if
CurStep=ssInstall then begin
if
MyTask.Checked then begin
MyFiles:=['001.png','002.png','003.png','004.png']; // указать файлы или маски нужные для бакупа через запятую. при указании маски '*' бакупятся все файлы с вложенными папками

MyDir:=ExpandConstant('{pf}'+'\MyProg\'); //папка откуда бакупить
BackDir:=ExpandConstant('{pf}'+'\MyProg\Backup\'); // папка куда бакупить
for i:=0 to GetArrayLength(MyFiles)-1 do
begin
if
FindFirst(MyDir+MyFiles[i], FindFiles) then begin
repeat
if not
DirExists(BackDir) then begin
CreateDir(BackDir);
end;
MoveFile(MyDir+FindFiles.Name, BackDir+FindFiles.Name);
until not FindNext(FindFiles);
FindClose(FindFiles);
end;
end;
end;
end;
end;

procedure InitializeWizard();
begin
MyTask:=TCheckBox.Create(WizardForm);
with MyTask do
begin
Parent:=WizardForm.SelectDirPage;
Caption:='Сделать Бэкап';
Left:=ScaleX(0);
Top:=ScaleY(120);
Width:=ScaleX(400);
Height:=ScaleY(15);
TabOrder:=0;
Checked:=True;
end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
FindFiles: TFindRec;
MyDir, BackDir: string;
begin
if
CurUninstallStep = usPostUninstall then begin
MyDir:=ExpandConstant('{pf}'+'\MyProg\'); //папка куда возвращать файлы
BackDir:=ExpandConstant('{pf}'+'\MyProg\Backup\'); // папка откуда брать файлы
if DirExists(BackDir) then begin
if
MsgBox('Восстановить данные из бэкапа?', mbConfirmation, MB_YESNO) = IDYES then begin
if
FindFirst(BackDir+'*', FindFiles) then begin
repeat
MoveFile(BackDir+FindFiles.Name, MyDir+FindFiles.Name);
until not FindNext(FindFiles);
FindClose(FindFiles);
RemoveDir(BackDir);
end;
end;
end;
end;
end;

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


Последний раз редактировалось ZVSRus, 30-03-2016 в 16:12.

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

Отправлено: 15:49, 30-03-2016 | #1465


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


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

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


А, забыл сказать) Надо что бы это всё не просто бакупилось, а ещё и запихивалось в архив, да.
При том, что бы в имени архива была дата, и архивировалось это встроеным архиватором. (в идеале)

Отправлено: 15:59, 30-03-2016 | #1466


Аватара для ZVSRus

Старожил


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

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


Цитата vovann01:
А, забыл сказать) Надо что бы это всё не просто бакупилось, а ещё и запихивалось в архив, да.
При том, что бы в имени архива была дата, и архивировалось это встроеным архиватором. (в идеале)
Если Вы хотите сказать что в Inno Setup есть встроенный архиватор, тогда скажите где он находится и как на него посмотреть.

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


Отправлено: 16:25, 30-03-2016 | #1467


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


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

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


Если бы я хорошо знал Inno Setup, яб не сидел тут. Тогда предогаю юзать 7za, я даже скрипт написал на архивацию, не знаю, как сильно он поможет, и можно ли его воткнуть в установщик, но:

Содержание моего батника:

Скрытый текст
"C:\Users\v.pon\Desktop\ARXIV\7za.exe" a %date%.rar c:\Los\

Отправлено: 16:31, 30-03-2016 | #1468


Аватара для Dodakaedr

Ветеран


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

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


vovann01, Я вам уже давал пример, юзайте его!

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


Отправлено: 16:32, 30-03-2016 | #1469


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


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

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


Цитата Dodakaedr:
юзайте его! »
да не работает он нормально. Я не знаю почему. Мож я тупой, или хз

Вот ваш код, но как его адаптировать под себя то ?

Скрытый текст
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=.

[Components]
Name: "arch"; Description: "1.7z\2.7z";

[Files]
Source: "7za.exe"; Flags: dontcopy deleteafterinstall
Source: "1.7z"; DestDir: "{app}\Icons"; AfterInstall: "Extract()"; Components: arch;
Source: "2.7z"; DestDir: "{app}"; AfterInstall: "Extract()"; Components: arch;

[code]
procedure Extract();
var
rs: integer;
strFile: String;
begin
strFile := ExpandConstant(CurrentFileName);
if not FileExists(ExpandConstant('{tmp}\7za.exe')) then ExtractTemporaryFile('7za.exe');
Exec(ExpandConstant('{tmp}\7za.exe'), ' x '+'"'+strFile+'" -y -o'+'"'+ExtractFilePath(strFile)+'"', '', SW_Hide, ewWaitUntilTerminated, rs);
DeleteFile(strFile);
end;


буду очень рад если мне помогут

Скрытый текст
[Setup]
AppName=MyProg
AppVerName=MyProg
DefaultDirName={pf}\MyProg
DefaultGroupName=MyProg
OutputDir=.

[Files]
Source: "D:\Files\*"; DestDir: "{app}"; Flags: ignoreversion

[code]
var
MyTask: TCheckBox;

function MoveFile(const srcFile, destFile: PChar): Integer; external 'MoveFileA@kernel32.dll stdcall';

procedure CurStepChanged(CurStep: TSetupStep);
var
FindFiles: TFindRec;
i: integer;
MyFiles: array of string;
MyDir, BackDir: string;
begin
if CurStep=ssInstall then begin
if MyTask.Checked then begin
MyFiles:=['001.png','002.png','003.png','004.png']; // указать файлы или маски нужные для бакупа через запятую. при указании маски '*' бакупятся все файлы с вложенными папками

MyDir:=ExpandConstant('{pf}'+'\MyProg\'); //папка откуда бакупить
BackDir:=ExpandConstant('{pf}'+'\MyProg\Backup\'); // папка куда бакупить
for i:=0 to GetArrayLength(MyFiles)-1 do
begin
if FindFirst(MyDir+MyFiles[i], FindFiles) then begin
repeat
if not DirExists(BackDir) then begin
CreateDir(BackDir);
end;
MoveFile(MyDir+FindFiles.Name, BackDir+FindFiles.Name);
until not FindNext(FindFiles);
FindClose(FindFiles);
end;
end;
end;
end;
end;

procedure InitializeWizard();
begin
MyTask:=TCheckBox.Create(WizardForm);
with MyTask do
begin
Parent:=WizardForm.SelectDirPage;
Caption:='Сделать Бэкап';
Left:=ScaleX(0);
Top:=ScaleY(120);
Width:=ScaleX(400);
Height:=ScaleY(15);
TabOrder:=0;
Checked:=True;
end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
FindFiles: TFindRec;
MyDir, BackDir: string;
begin
if CurUninstallStep = usPostUninstall then begin
MyDir:=ExpandConstant('{pf}'+'\MyProg\'); //папка куда возвращать файлы
BackDir:=ExpandConstant('{pf}'+'\MyProg\Backup\'); // папка откуда брать файлы
if DirExists(BackDir) then begin
if MsgBox('Восстановить данные из бэкапа?', mbConfirmation, MB_YESNO) = IDYES then begin
if FindFirst(BackDir+'*', FindFiles) then begin
repeat
MoveFile(BackDir+FindFiles.Name, MyDir+FindFiles.Name);
until not FindNext(FindFiles);
FindClose(FindFiles);
RemoveDir(BackDir);
end;
end;
end;
end;
end;

Последний раз редактировалось vovann01, 30-03-2016 в 16:58.


Отправлено: 16:35, 30-03-2016 | #1470



Компьютерный форум 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




 
Переход