![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 8] |
|
Скрипты Inno Setup. Помощь и советы [часть 8]
|
Ветеран Сообщения: 1274 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы (Archive Pack 1):
Скрипты Inno Setup. Помощь и советы [часть 6] Скрипты Inno Setup. Помощь и советы [часть 7] |
|
Отправлено: 08:52, 02-02-2015 |
Ветеран Сообщения: 532
|
Профиль | Отправить PM | Цитировать Подскажите пожалуйста что нужно дописать в скрипте, чтобы заполнились пустые поля?
на данный момент в скрипте есть строки [Setup] AppName=Soft Pack AppVersion=2016 AppVerName=Soft Pack VersionInfoVersion=2016 VersionInfoCompany=ispolin VersionInfoCopyright=ispolin AppCopyright=ispolin ![]() |
------- Отправлено: 14:30, 29-03-2016 | #1461 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата ispolin:
|
|
------- Последний раз редактировалось AlexanderSergeev, 29-03-2016 в 16:24. Отправлено: 16:02, 29-03-2016 | #1462 |
Старожил Сообщения: 292
|
Профиль | Отправить PM | Цитировать Цитата ispolin:
VersionInfoProductVersion= Значение из 4 чисел, разделенных точками. Задает двоичное значение версии файла инсталлятора. VersionInfoProductName= AppName, если AppName не содержит констант (иначе будет пустая строка). Определяет значение названия продукта |
|
------- Последний раз редактировалось ZVSRus, 29-03-2016 в 16:30. Отправлено: 16:22, 29-03-2016 | #1463 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Цитата ZVSRus:
Цитата ZVSRus:
Прилагаю пример своего "генерального кода", указал только 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 |
Старожил Сообщения: 292
|
Профиль | Отправить PM | Цитировать Цитата vovann01:
Работает нормально, и бекапит и возвращает сбекапенные файлы на место при удалении новых файлов. Для примера взялась папка с картинками В вашем примере в секции Setup в директиве DefaultDirName= нет пути куда устанавливать, есть только имя программы. Директива должна выглядеть так DefaultDirName={pf}{#MyAppName} или пропиши вручную так C:\Users\v.pon\Desktop\los Скрытый текст
Цитата:
|
||
------- Последний раз редактировалось ZVSRus, 30-03-2016 в 16:12. Отправлено: 15:49, 30-03-2016 | #1465 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать А, забыл сказать) Надо что бы это всё не просто бакупилось, а ещё и запихивалось в архив, да.
При том, что бы в имени архива была дата, и архивировалось это встроеным архиватором. (в идеале) |
Отправлено: 15:59, 30-03-2016 | #1466 |
Старожил Сообщения: 292
|
Профиль | Отправить PM | Цитировать Цитата vovann01:
|
|
------- Отправлено: 16:25, 30-03-2016 | #1467 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Если бы я хорошо знал Inno Setup, яб не сидел тут. Тогда предогаю юзать 7za, я даже скрипт написал на архивацию, не знаю, как сильно он поможет, и можно ли его воткнуть в установщик, но:
Содержание моего батника: Скрытый текст
"C:\Users\v.pon\Desktop\ARXIV\7za.exe" a %date%.rar c:\Los\
|
Отправлено: 16:31, 30-03-2016 | #1468 |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать vovann01, Я вам уже давал пример, юзайте его!
|
------- Отправлено: 16:32, 30-03-2016 | #1469 |
Новый участник Сообщения: 10
|
Профиль | Отправить 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 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты 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 |
|