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

Показать сообщение отдельно

Пользователь


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

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


Цитата Farser21:
2) Как сделать чтобы при установке компонентов, очищалось старое содержимое того места куда устанавливаешь, и место него устанавливалось новое. »
читать дальше »
Эти секции отвечают за удаление файлов и/или папок перед установкой ([InstallDelete]) или при удалении ([UninstallDelete]) приложения.

Задача: перед установкой обновления для установленной программы удалить в папке приложения (путь к которой укажет пользователь при установке приложения) директорию и все ее содержимое (подпапки и файлы), и создать папку с тем же именем, куда установить все файлы обновления.
Решение:

…………………………
;Перед установкой удалить в папке приложения папку Data со всем ее содержимым
[InstallDelete]
Type: filesandordirs; Name: "{app}\Data"
;Создать папку с тем же именем, что и удаленная (хотя создавать ее не обязательно – инсталлятор все равно ее создаст при выполнении секции [Files]
[Dirs]
Name: "{app}\Data"

;Установить в созданную папку файлы
[Files]
Source: "C:\Program1.exe"; DestDir: "{app}\Data"
Source: "C:\Program2.exe"; DestDir: "{app}\Data"
Source: "C:\ReadMe.txt"; DestDir: "{app}\Data"; Flags: isreadme

;При удалении приложения удалить созданную папку
[UninstallDelete]
Type: filesandordirs; Name: "{app}\Data"
…………………………

Эту же задачу можно решить с помощью секции [Code]:

Код: Выделить весь код
[Files]
Source: "C:\Program1.exe"; DestDir: "{app}\Data"; BeforeInstall: MyBeforeInstall
Source: "C:\Program2.exe"; DestDir: "{app}\Data"; 
Source: "C:\ReadMe.txt"; DestDir: "{app}\Data"; Flags: isreadme

[UninstallDelete]
Type: filesandordirs; Name: "{app}\Data"
 
[Code]
{Создать процедуру, которую инсталлятор вызовет перед установкой файла Program1.exe}
Procedure MyBeforeInstall;
Begin
{Если в директории программы существует папка Data, она удаляется со всеми вложенными в нее файлами и папками}
 if DirExists(ExpandConstant('{app}\Data')) then
  DelTree(ExpandConstant('{app}\Data'), True, True, True);
end;
…………………………


Цитата Farser21:
3) Как сделать авто определение установки, т.е. установщик сам выбирает нужную папку куда устанавливать. »
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={code:GetInstallDir}
AppendDefaultDirName=no

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

[Code]
Function GetInstallDir(Path: String ): String;
begin
RegQueryStringValue(HKLM, 'SOFTWARE\Rockstar Games\EFLC', 'InstallPath', Path);//Какой ключ реестра ищет ...
Result := Path;
end;

function InitializeSetup(): Boolean;
begin
Result:= true;
if not RegKeyExists(HKLM, 'SOFTWARE\Rockstar Games\EFLC') then
MsgBox('Игра {#SetupSetting("AppName")} не найдена! Укажите путь к папке с игрой вручную!', mbinformation, mb_ok);
end;

Последний раз редактировалось FX-DENIS, 11-12-2013 в 18:58.

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

Отправлено: 15:38, 11-12-2013 | #1690