![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 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 |
Ветеран Сообщения: 517
|
Профиль | Отправить PM | Цитировать Цитата ZVSRus:
Если я верно Вас понял. |
|
Отправлено: 22:24, 01-02-2016 | #1281 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 292
|
Профиль | Отправить PM | Цитировать saurn,
Цитата:
|
|
Последний раз редактировалось ZVSRus, 22-03-2016 в 12:35. Отправлено: 09:12, 02-02-2016 | #1282 |
Ветеран Сообщения: 517
|
Профиль | Отправить PM | Цитировать ZVSRus,
Скрытый текст
Имена папок к логике скрипта не имеют никакого отношения. Инсталятору указано автоматически подставлять имя последней папки в пути установки. Данный скрипт вполне самодостаточен, однако имена каталогов в нем указаны, лишь для примера того, как все это будет работать. Как оперировать с именами каталогов в скрипте - это уже ваше дело.
=================================================================================== #define Name "Test" [Setup] SourceDir=. OutputDir=Setup AppName=Test AppVerName=Test DefaultDirName={pf}\Test DefaultGroupName=Test OutputBaseFilename=Setup AllowNoIcons=true [Languages] Name: russian; MessagesFile: compiler:Languages\Russian.isl [Files] Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs; [Icons] Name: {group}\MyProg; Filename: {app}; WorkingDir: {app} [CustomMessages] russian.RestoreButton=Сброс [Code] var ISCustomPage1: TWizardPage; Installer: TNewRadioButton; Portable: TNewRadioButton; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// _szPath: String; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure RedesignWizardForm; begin ISCustomPage1 := CreateCustomPage(wpWelcome, 'ISCustomPage1_Caption', 'ISCustomPage1_Description'); { Installer } Installer := TNewRadioButton.Create(WizardForm); with Installer do begin Parent := ISCustomPage1.Surface; Left := ScaleX(16); Top := ScaleY(32); Width := ScaleX(113); Height := ScaleY(17); Caption := 'Установка'; Checked := True; end; { Portable } Portable := TNewRadioButton.Create(WizardForm); with Portable do begin Parent := ISCustomPage1.Surface; Left := ScaleX(16); Top := ScaleY(72); Width := ScaleX(113); Height := ScaleY(17); Caption := 'Распаковка'; end; Installer.TabOrder := 0; Portable.TabOrder := 1; end; #define A = (Defined UNICODE) ? "W" : "A" const DRIVE_CDROM = 5; var BrowseForm: TSetupForm; BrowseForm2: TSetupForm; DirTreeView: TFolderTreeView; DirFolderTreeView: TStartMenuFolderTreeView; EditTreeView: TNewEdit; EditFolderTreeView: TNewEdit; DB_Button: TNewButton; GB_Button: TNewButton; OldEvent_NoIconsCheckClick: TNotifyEvent; OKButton, ButtonNewFolder: TButton; function GetDriveType(nDrive: string): Longint; external 'GetDriveType{#A}@kernel32.dll stdcall'; //////////////////////////////////////////////////////////////////////////////////////////////// function _szNameLastFolder( const _szPath: String ): String; { _szPath: path from which you want to get the name of the last folder } { Declared local variables } var _i: Integer; _nLen: Integer; _szBuff: String; begin _szBuff := RemoveBackslash( _szPath ); _nLen := Length( _szBuff ); for _i := _nLen downto 1 do begin if ( _szBuff[_i] = '\' ) then Break; { Stumbled upon a slash , stop the cycle } Result := Format( '%s%s', [Result, _szBuff[_i]] ); end; _szBuff := Result; Result := ''; _nLen := Length( _szBuff ); for _i := _nLen downto 1 do Result := Format( '%s%s', [Result, _szBuff[_i]] ); end; //////////////////////////////////////////////////////////////////////////////////////////////// function CDROM(Drive: String): Boolean; begin Result:= GetDriveType(Drive) = 5; end; procedure GetDrive(Sender: TObject); var Path, Path1: String; begin Path:= ExtractFileDrive(DirTreeView.Directory); Path1:= ExtractFileDrive(EditTreeView.Text); ButtonNewFolder.Enabled:= not CDROM(Path); OKButton.Enabled:= not CDROM(Path1); if CDROM(Path1) then MsgBox('Установка на выбранный диск невозможна!', mbError, MB_OK); end; procedure DirTreeViewChange(Sender: TObject); begin if DirTreeView.Directory <> WizardForm.DirEdit.Text then begin ///////////////////////////////////////////////////////////////////////////////////////////////////////// EditTreeView.Text := AddBackslash(DirTreeView.Directory) + _szNameLastFolder( _szPath ); ///////////////////////////////////////////////////////////////////////////////////////////////////////// GetDrive(nil); end else EditTreeView.Text := DirTreeView.Directory; end; procedure DirFolderTreeViewChange(Sender: TObject); begin if DirFolderTreeView.Directory <> WizardForm.GroupEdit.Text then EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}' else EditFolderTreeView.Text := DirFolderTreeView.Directory; end; procedure BrowseFormButtonsTreeViewOnClick(Sender: TObject); begin case TButton(Sender).Tag of 1: begin ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// EditTreeView.Text := _szPath; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// GetDrive(nil); end; 2: begin DirTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName)); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// EditTreeView.Text := AddBackslash(DirTreeView.Directory) + _szNameLastFolder( _szPath ); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// end; 3: if EditTreeView.Text <> WizardForm.DirEdit.Text then WizardForm.DirEdit.Text := EditTreeView.Text; end; end; procedure BrowseFormButtonsFolderTreeViewOnClick(Sender: TObject); begin case TButton(Sender).Tag of 4: EditFolderTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#Name}')); 5: begin DirFolderTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName)); EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}'; end; 6: if EditFolderTreeView.Text <> WizardForm.GroupEdit.Text then WizardForm.GroupEdit.Text := EditFolderTreeView.Text; end; end; procedure BrowseDirTreeViewClick(Sender: TObject); begin BrowseForm := CreateCustomForm(); with BrowseForm do begin Width := ScaleX(413); Height := ScaleY(361); Caption := SetupMessage(msgBrowseDialogTitle); Position := poScreenCenter; with TLabel.Create(nil) do begin SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16)); Caption := SetupMessage(msgBrowseDialogLabel); Parent := BrowseForm; Font.Size := 8; end; DirTreeView := TFolderTreeView.Create(nil) with DirTreeView do begin SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225)); OnChange := @DirTreeViewChange; Parent := BrowseForm; end; EditTreeView := TNewEdit.Create(nil); with EditTreeView do begin SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21)); Text := DirTreeView.Directory; Parent := BrowseForm; Font.Color := clWindowText; end; with TButton.Create(nil) do begin SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23)); Parent := BrowseForm; Caption := SetupMessage(msgButtonCancel); ModalResult := mrCancel; end; with TButton.Create(nil) do begin SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23)); Parent := BrowseForm; Caption := ExpandConstant('{cm:RestoreButton}'); Tag := 1; OnClick := @BrowseFormButtonsTreeViewOnClick; end; ButtonNewFolder:= TButton.Create(nil) with ButtonNewFolder do begin SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23)); Parent := BrowseForm; Caption := SetupMessage(msgButtonNewFolder); Tag := 2; OnClick := @BrowseFormButtonsTreeViewOnClick; end; OKButton:= TButton.Create(nil); with OKButton do begin SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23)); Parent := BrowseForm; Caption := SetupMessage(msgButtonOK); Tag := 3; OnClick := @BrowseFormButtonsTreeViewOnClick; ModalResult := mrOk; end; DirTreeView.ChangeDirectory(AddBackslash(WizardForm.DirEdit.Text), True); ShowModal; Free; end; end; procedure BrowseDirFolderTreeViewClick(Sender: TObject); begin BrowseForm2 := CreateCustomForm(); with BrowseForm2 do begin Width := ScaleX(413); Height := ScaleY(361); Caption := SetupMessage(msgBrowseDialogTitle); Position := poScreenCenter; with TLabel.Create(nil) do begin SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16)); Caption := SetupMessage(msgBrowseDialogLabel); Parent := BrowseForm2; Font.Size := 8; end; DirFolderTreeView := TStartMenuFolderTreeView.Create(nil) with DirFolderTreeView do begin SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225)); SetPaths(ExpandConstant('{userprograms}'),ExpandConstant('{commonprograms}'),ExpandConstant('{userstartup}'),ExpandConstant('{commonstartup}')); OnChange := @DirFolderTreeViewChange; Parent := BrowseForm2; end; EditFolderTreeView := TNewEdit.Create(nil); with EditFolderTreeView do begin SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21)); Text := DirFolderTreeView.Directory; Parent := BrowseForm2; Font.Color := clWindowText; end; with TButton.Create(nil) do begin SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23)); Parent := BrowseForm2; Caption := SetupMessage(msgButtonCancel); ModalResult := mrCancel; end; with TButton.Create(nil) do begin SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23)); Parent := BrowseForm2; Caption := ExpandConstant('{cm:RestoreButton}'); Tag := 4; OnClick := @BrowseFormButtonsFolderTreeViewOnClick; end; with TButton.Create(nil) do begin SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23)); Parent := BrowseForm2; Caption := SetupMessage(msgButtonNewFolder); Tag := 5; OnClick := @BrowseFormButtonsFolderTreeViewOnClick; end; with TButton.Create(nil) do begin SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23)); Parent := BrowseForm2; Caption := SetupMessage(msgButtonOK); Tag := 6; OnClick := @BrowseFormButtonsFolderTreeViewOnClick; ModalResult := mrOk; end; DirFolderTreeView.ChangeDirectory(AddBackslash(WizardForm.GroupEdit.Text), True); ShowModal; Free; end; end; procedure NoIconsCheckClick(Sender: TObject); begin OldEvent_NoIconsCheckClick(Sender); GB_Button.Enabled := not WizardForm.NoIconsCheck.Checked; end; procedure InitializeWizard(); begin RedesignWizardForm; OldEvent_NoIconsCheckClick := WizardForm.NoIconsCheck.OnClick; WizardForm.NoIconsCheck.OnClick := @NoIconsCheckClick; WizardForm.DirBrowseButton.Hide; DB_Button := TNewButton.create(WizardForm); with DB_Button do begin Parent := WizardForm.SelectDirPage; SetBounds(WizardForm.DirBrowseButton.Left, WizardForm.DirBrowseButton.Top, WizardForm.DirBrowseButton.Width, WizardForm.DirBrowseButton.Height - ScaleY(1)); Caption := SetupMessage(msgButtonBrowse); OnClick := @BrowseDirTreeViewClick; end; WizardForm.GroupBrowseButton.Hide; GB_Button := TNewButton.create(WizardForm); with GB_Button do begin Parent := WizardForm.SelectProgramGroupPage; SetBounds(WizardForm.GroupBrowseButton.Left, WizardForm.GroupBrowseButton.Top, WizardForm.GroupBrowseButton.Width, WizardForm.GroupBrowseButton.Height - ScaleY(1)); Caption := SetupMessage(msgButtonBrowse); OnClick := @BrowseDirFolderTreeViewClick; end; end; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure CurPageChanged(CurPageID: Integer); begin case CurPageID of wpSelectDir: begin case Installer.Checked of False: _szPath := ( AddBackslash(ExpandConstant('{src}')) + '{#Name}Portable' ); True: _szPath := RemoveBackslashUnlessRoot(ExpandConstant('{#SetupSetting("DefaultDirName")}') ); end; WizardForm.DirEdit.Text := _szPath; end; end; end; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// [ISFormDesigner] WizardForm=FF0A005457495A415244464F524D003010C403000054504630F10B5457697A617264466F726D0A57697A617264466F726D0C436C69656E744865696768740368010B436C69656E74576964746803F1010C4578706C696369744C65667402000B4578706C69636974546F7002000D4578706C6963697457696474680301020E4578706C69636974486569676874038E010D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D6550616765084E65787450616765070D4953437573746F6D50616765310D4578706C69636974576964746803F1010E4578706C696369744865696768740339010000F110544E65774E6F7465626F6F6B5061676509496E6E6572506167650D4578706C69636974576964746803F1010E4578706C6963697448656967687403390100F10C544E65774E6F7465626F6F6B0D496E6E65724E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B4C6963656E7365506167650C50726576696F757350616765070D4953437573746F6D50616765310D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6F6B506167650D53656C65637 |
Отправлено: 15:47, 02-02-2016 | #1283 |
Ветеран Сообщения: 862
|
Профиль | Отправить PM | Цитировать Доброе время суток. помогите решить проблему с этим компонентом.
Name: AFP\I; Description: Установить {#MyAppName}; Flags: disablenouninstallwarning; Types: full; ![]() ИЛИ
или подскажите как сделать так, чтобы при выборе 1-го или нескольких этих компонентов
[Components] Name: AFP\I\AX; Description: Для Internet Explorer; Flags: disablenouninstallwarning; Types: full; Name: AFP\I\NPAPI; Description: Для AOL, Firefox, Netscape, Opera; Flags: disablenouninstallwarning; Types: full; Name: AFP\I\PPAPI; Description: Для платформы Chromium; Flags: disablenouninstallwarning; Types: full; и становился неактивным. и так на оборот. Скрипт |
------- Последний раз редактировалось habib2302, 04-02-2016 в 11:41. Отправлено: 12:03, 03-02-2016 | #1284 |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Цитата habib2302:
Скрытый текст
#define MyAppName "My Program" #define MyAppVersion "1.5" [Setup] AppName={#MyAppName} AppVersion={#MyAppVersion} DefaultDirName={pf}\{#MyAppName} [Languages] Name: "default"; MessagesFile: "compiler:Default.isl" [Components] Name: AFP; Description: {#MyAppName}; Flags: fixed disablenouninstallwarning; Types: full; Name: AFP\I; Description: Установить {#MyAppName}; Flags: disablenouninstallwarning; Types: full; Name: AFP\I\AX; Description: Для Internet Explorer; Flags: disablenouninstallwarning; Types: full; Name: AFP\I\NPAPI; Description: Для AOL, Firefox, Netscape, Opera; Flags: disablenouninstallwarning; Types: full; Name: AFP\I\PPAPI; Description: Для платформы Chromium; Flags: disablenouninstallwarning; Types: full; Name: AFP\I\ALL; Description: Для Всех Браузеров; Flags: disablenouninstallwarning; Types: full; [code] procedure checking(sender: tobject); begin if WizardForm.ComponentsList.Checked[5] = true then begin WizardForm.ComponentsList.Checked[2] := false; WizardForm.ComponentsList.ItemEnabled[2] := false; WizardForm.ComponentsList.Checked[3] := false; WizardForm.ComponentsList.ItemEnabled[3] := false; WizardForm.ComponentsList.Checked[4] := false; WizardForm.ComponentsList.ItemEnabled[4] := false; end else begin WizardForm.ComponentsList.ItemEnabled[2] := true; WizardForm.ComponentsList.ItemEnabled[3] := true; WizardForm.ComponentsList.ItemEnabled[4] := true; end; if (WizardForm.ComponentsList.Checked[2] or WizardForm.ComponentsList.Checked[3] or WizardForm.ComponentsList.Checked[4]) then begin WizardForm.ComponentsList.Checked[5] := false; WizardForm.ComponentsList.ItemEnabled[5] := false; end else WizardForm.ComponentsList.ItemEnabled[5] := true; end; procedure InitializeWizard(); begin WizardForm.ComponentsList.Checked[2] := false; WizardForm.ComponentsList.Checked[3] := true; WizardForm.ComponentsList.Checked[4] := false; WizardForm.ComponentsList.Checked[5] := false; WizardForm.ComponentsList.ItemEnabled[5] := false; WizardForm.ComponentsList.OnClickCheck := @checking; end; |
|
------- Отправлено: 20:29, 04-02-2016 | #1285 |
Пользователь Сообщения: 54
|
Профиль | Отправить PM | Цитировать Помогите пожалуйста со скриптом (или хотя бы ссылкой, где описано решение).
Задача такая: 1. создать простой установщик (на данном этапе проблем не возникает) 2. установщик должен заменить файлы (в разных директориях) и сделать бэкап оригиналов в отдельную папку 3. при деинсталляции оригинальные файлы должны вернуться обратно на свои места |
Отправлено: 15:17, 05-02-2016 | #1286 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Подскажите, как сделать, чтобы после установки программы, она не просила регистрацию?
То есть если у меня уже зарегестрированная версия, она же и перенеслась на другой комп. |
Отправлено: 12:01, 06-02-2016 | #1287 |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Цитата a.k.a. Rasputin:
Скрытый текст
#define MyAppName "My Program" #define MyAppVersion "1.5" [Setup] AppName={#MyAppName} AppVersion={#MyAppVersion} DefaultDirName={pf}\{#MyAppName} OutputDir=. [Languages] Name: "default"; MessagesFile: "compiler:Default.isl" [Files] Source: "{app}\1.txt"; DestDir: "{app}\txt"; BeforeInstall: "BackupFile()"; Flags: ignoreversion Source: "{app}\2.txt"; DestDir: "{app}"; BeforeInstall: "BackupFile()"; Flags: ignoreversion Source: "{app}\1.cjstyles"; DestDir: "{app}\cjstyles"; BeforeInstall: "BackupFile()"; Flags: ignoreversion Source: "{app}\1.rtf"; DestDir: "{app}\txt"; BeforeInstall: "BackupFile()"; Flags: ignoreversion Source: "{app}\1.zip"; DestDir: "{app}\zip"; BeforeInstall: "BackupFile()"; Flags: ignoreversion [code] type #ifdef UNICODE #define A "W" PChar = PAnsiChar; #else #define A "A" #endif TSHFileOpStruct = record Wnd: HWND; wFunc: UINT; pFrom: PChar; pTo: PChar; fFlags: Word; fAnyOperationsAborted: BOOL; hNameMappings: HWND; lpszProgressTitle: PChar; end; const FO_MOVE = $0001; FO_COPY = $0002; FOF_SILENT = $0004; FOF_NOCONFIRMATION = $0010; FOF_FILESONLY = $0080; FOF_NOCONFIRMMKDIR = $0200; function SHFileOperation(const lpFileOp: TSHFileOpStruct):Integer; external 'SHFileOperation@shell32.dll stdcall'; procedure BackupFile(); var file, backFile, backpath: string; begin if FileExists(ExpandConstant(CurrentFileName)) then begin File := ExpandConstant(CurrentFileName); backpath := file; StringChangeEx(backpath, ExpandConstant('{app}'), '', True); backFile := ExpandConstant('{app}\Backup') + backpath; ForceDirectories(ExtractFilePath(backfile)); RenameFile(file, backfile); end; end; function BackupDir(const fromDir, toDir: ansistring; IsMove: Boolean): Boolean; var fos: TSHFileOpStruct; _fromDir, _toDir: ansistring; SR: TFindRec; res: Boolean; begin ForceDirectories(toDir); if IsMove then fos.wFunc := FO_MOVE else fos.wFunc := FO_COPY; fos.fFlags := FOF_FILESONLY or FOF_SILENT or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR; _fromDir:= AddBackslash(fromDir); _toDir := AddBackslash(toDir); if (Length(fromDir) = Length(_fromDir)) then begin res:= FindFirst(_fromDir + '*', SR); try while res do begin if (SR.Name <> '') and (SR.Name <> '.') and (SR.Name <> '..') then begin if SR.Attributes = FILE_ATTRIBUTE_DIRECTORY then begin _fromDir:= _fromDir + SR.Name + #0#0; _toDir := _toDir + #0#0; fos.pFrom := PChar(_fromDir); fos.pTo := PChar(_toDir); end else begin _fromDir:= _fromDir + SR.Name + #0#0; _toDir := _toDir + SR.Name + #0#0; fos.pFrom := PChar(_fromDir); fos.pTo := PChar(_toDir); end; Result := (0 = ShFileOperation(fos)); _fromDir:= ExtractFilePath(_fromDir); _toDir:= ExtractFilePath(_toDir); end; res := FindNext(SR); end; finally FindClose(SR); end; end else begin _fromDir:= RemoveBackslashUnlessRoot(_fromDir) + #0#0; _toDir := RemoveBackslashUnlessRoot(_toDir) + #0#0; fos.pFrom := PChar(_fromDir); fos.pTo := PChar(_toDir); Result := (0 = ShFileOperation(fos)); end; end; procedure RestoreBackup(backDir: string); begin BackupDir(backDir, ExpandConstant('{app}'), True); DelTree(backDir, true, true, true); end; procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); begin if CurUninstallStep = usdone then begin RestoreBackup(ExpandConstant('{app}\Backup\')); end; end; Цитата djbionicl:
|
||
------- Отправлено: 18:57, 06-02-2016 | #1288 |
Пользователь Сообщения: 54
|
Профиль | Отправить PM | Цитировать Dodakaedr,
от души благодарю! Скрипт работает. А то я сижу второй день, вчитываюсь в документацию. Если вас не затруднит, подскажите пожалуйста, каким образом сделать так, чтобы путь установки брался из реестра? В реестре же в упор не нахожу ключей, которые бы указывали путь. |
Отправлено: 19:49, 06-02-2016 | #1289 |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Цитата a.k.a. Rasputin:
|
|
------- Отправлено: 20:20, 06-02-2016 | #1290 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты 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 |
|