Имя пользователя:
Пароль:
 | Правила  

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 16-02-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]

Отправлено: 11:48, 10-03-2014

 

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


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

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


помогите исправить ошибку
код
Цитата:
#define ModVer "0.9.4"
#include "SHFileOperation.iss"



[Setup]


[code]
var
BackupPage: TWizardPage;
DeleteRadioButton, MoveRadioButton, Move2RadioButton, NoneRadioButton: TNewRadioButton;

const
BackupDescText =
'Во избежание проблем совместимости и конфликтов между модификациями рекомендуется удалить уже установленные на данный момент в игровом клиенте.' #13#13 'Выберите необходимый пункт из представленных. При этом будет очищено содержимое папки "res_mods\{#ModVer}, удалена папка "res_mods\xvm" или созданы резервные копии Ваших файлов.';
DeleteDescText =
'Установщик удалит все файлы в папках.';
MoveDescText =
'Установщик сделает резервную копию всех файлов в папках.';
Move2DescText =
'Установщик сделает резервную копию только заменяемых файлов в папках.';
NoneDescText =
'Установщик оставит всё как есть.';

function BackupCheck_1(): Boolean;
var
BackupDescLabel, DeleteDescLabel, MoveDescLabel, Move2DescLabel, NoneDescLabel: TLabel;
begin
BackupPage:=CreateCustomPage(wpWelcome, 'Создание резервных копий файлов перед установкой', 'Пожалуйста, прочтите следующую важную информацию перед тем, как продолжить.');
BackupDescLabel:=TLabel.Create(WizardForm);
BackupDescLabel.Parent:=BackupPage.Surface;
BackupDescLabel.Left:=0;
BackupDescLabel.Top:=0;
BackupDescLabel.Width:=BackupPage.SurfaceWidth;
BackupDescLabel.Height:=80;
BackupDescLabel.AutoSize:=False;
BackupDescLabel.Wordwrap:=True;
BackupDescLabel.Caption:=BackupDescText;

DeleteRadioButton:=TNewRadioButton.Create(WizardForm);
DeleteRadioButton.Parent:=BackupPage.Surface;
DeleteRadioButton.Checked:=False;
DeleteRadioButton.Top:=85;
DeleteRadioButton.Width:=BackupPage.SurfaceWidth;
DeleteRadioButton.Font.Style:=[fsBold];
DeleteRadioButton.Font.Size:=9;
DeleteRadioButton.Caption:='Удалить файлы'
DeleteDescLabel:=TLabel.Create(WizardForm);
DeleteDescLabel.Parent:=BackupPage.Surface;
DeleteDescLabel.Left:=18;
DeleteDescLabel.Top:=DeleteRadioButton.Top + DeleteRadioButton.Height + 4;
DeleteDescLabel.Width:=BackupPage.SurfaceWidth;
DeleteDescLabel.Height:=40;
DeleteDescLabel.AutoSize:=False;
DeleteDescLabel.Wordwrap:=True;
DeleteDescLabel.Caption:=DeleteDescText;

MoveRadioButton:=TNewRadioButton.Create(WizardForm);
MoveRadioButton.Parent:=BackupPage.Surface;
MoveRadioButton.Checked:=False;
MoveRadioButton.Top:=125;
MoveRadioButton.Width:=BackupPage.SurfaceWidth;
MoveRadioButton.Font.Style:=[fsBold];
MoveRadioButton.Font.Size:=9;
MoveRadioButton.Caption:='Сделать резервную копию файлов'
MoveDescLabel:=TLabel.Create(WizardForm);
MoveDescLabel.Parent:=BackupPage.Surface;
MoveDescLabel.Left:=18;
MoveDescLabel.Top:=MoveRadioButton.Top + MoveRadioButton.Height + 4;
MoveDescLabel.Width:=BackupPage.SurfaceWidth;
MoveDescLabel.Height:=40;
MoveDescLabel.AutoSize:=False;
MoveDescLabel.Wordwrap:=True;
MoveDescLabel.Caption:=MoveDescText;

NoneRadioButton:=TNewRadioButton.Create(WizardForm);
NoneRadioButton.Parent:=BackupPage.Surface;
NoneRadioButton.Checked:=True;
NoneRadioButton.Top:=165;
NoneRadioButton.Width:=BackupPage.SurfaceWidth;
NoneRadioButton.Font.Style:=[fsBold];
NoneRadioButton.Font.Size:=9;
NoneRadioButton.Caption:='Обновить существующие файлы'
NoneDescLabel:=TLabel.Create(WizardForm);
NoneDescLabel.Parent:=BackupPage.Surface;
NoneDescLabel.Left:=18;
NoneDescLabel.Top:=Move2RadioButton.Top + Move2RadioButton.Height + 4;
NoneDescLabel.Width:=BackupPage.SurfaceWidth;
NoneDescLabel.Height:=40;
NoneDescLabel.AutoSize:=False;
NoneDescLabel.Wordwrap:=True;
NoneDescLabel.Caption:=Move2DescText;

NoneRadioButton:=TNewRadioButton.Create(WizardForm);
NoneRadioButton.Parent:=BackupPage.Surface;
NoneRadioButton.Checked:=False;
NoneRadioButton.Top:=205;
NoneRadioButton.Width:=BackupPage.SurfaceWidth;
NoneRadioButton.Font.Style:=[fsBold];
NoneRadioButton.Font.Size:=9;
NoneRadioButton.Caption:='Ничего не трогать'
NoneDescLabel:=TLabel.Create(WizardForm);
NoneDescLabel.Parent:=BackupPage.Surface;
NoneDescLabel.Left:=18;
NoneDescLabel.Top:=NoneRadioButton.Top + NoneRadioButton.Height + 4;
NoneDescLabel.Width:=BackupPage.SurfaceWidth;
NoneDescLabel.Height:=40;
NoneDescLabel.AutoSize:=False;
NoneDescLabel.Wordwrap:=True;
NoneDescLabel.Caption:=NoneDescText;
end;

function BackupCheck_2(): Boolean;
begin
If DeleteRadioButton.Checked then
begin
DelTree(ExpandConstant('{app}\res_mods\{#ModVer}'), True, True, True);
DelTree(ExpandConstant('{app}\res_mods\xvm'), True, True, True);
CreateDir(ExpandConstant('{app}\res_mods\{#ModVer}'));
end;
end;

function BackupCheck_3(): Boolean;
begin
If MoveRadioButton.Checked then
begin
MoveDir(ExpandConstant('{app}\res_mods\{#ModVer}\'),ExpandConstant('{app}\res_mods\backup\{#ModVer}' ));
MoveDir(ExpandConstant('{app}\res_mods\xvm\'),ExpandConstant('{app}\res_mods\backup\xvm'));
CreateDir(ExpandConstant('{app}\res_mods\{#ModVer}'));
DelTree(ExpandConstant('{app}\res_mods\xvm'), True, True, True);
end;
end;

function BackupCheck_4(): Boolean;
var
srcFile, destFile: string;
basePath, shortPath: string;
begin
If Move2RadioButton.Checked then
begin
basePath := ExpandConstant('{app}\res_mods');
srcFile := ExpandConstant(CurrentFileName);
shortPath := srcFile;
StringChangeEx(shortPath, basePath, '', True);
destFile := ExpandConstant('{app}\res_mods\Backup') + shortPath;
ForceDirectories(ExtractFilePath(destFile));
MoveFile(PChar(srcFile), PChar(destFile));
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssInstall then
begin
BackupCheck_2();
BackupCheck_3();
end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
CopyDir(ExpandConstant('{app}\res_mods\Backup\'),ExpandConstant('{app}\res_mods'));
DelTree(ExpandConstant('{app}\res_mods\Backup'), True, True, True);
end;
end;

procedure InitializeWizard();
begin
WizardForm.FileNameLabel.Visible:= False;
InitInfo();
BackupCheck_1();
end;


вот сама ошибка при запуске .ехе



Цитата saurn:
Если еще актуально:

К функциям, думаю, привяжете сами. »
спс уже сам сделал, а вот с привязкой не получается...

Последний раз редактировалось svs23, 08-12-2014 в 22:05.


Отправлено: 17:12, 08-12-2014 | #2091



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

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


Ветеран


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

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


svs23, в строке 268 обращение к элементу Move2RadioButton, которого не существует. Внимательно пересмотрите весь скрипт.

Отправлено: 19:17, 08-12-2014 | #2092


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


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

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


Цитата saurn:
svs23, в строке 268 обращение к элементу Move2RadioButton, которого не существует. Внимательно пересмотрите весь скрипт. »
в том то и проблема... я первый раз делаю установщик...
а как создать этот элемент Move2RadioButton?
вроде везде добавил Move2
и
Скрытый текст

NoneRadioButton:=TNewRadioButton.Create(WizardForm);
NoneRadioButton.Parent:=BackupPage.Surface;
NoneRadioButton.Checked:=True;
NoneRadioButton.Top:=165;
NoneRadioButton.Width:=BackupPage.SurfaceWidth;
NoneRadioButton.Font.Style:=[fsBold];
NoneRadioButton.Font.Size:=9;
NoneRadioButton.Caption:='Обновить существующие файлы'
NoneDescLabel:=TLabel.Create(WizardForm);
NoneDescLabel.Parent:=BackupPage.Surface;
NoneDescLabel.Left:=18;
NoneDescLabel.Top:=Move2RadioButton.Top + Move2RadioButton.Height + 4;
NoneDescLabel.Width:=BackupPage.SurfaceWidth;
NoneDescLabel.Height:=40;
NoneDescLabel.AutoSize:=False;
NoneDescLabel.Wordwrap:=True;
NoneDescLabel.Caption:=Move2DescText;

х.з что еще надо!
плиз хелп

Отправлено: 19:33, 08-12-2014 | #2093


Аватара для kotyarko@fb

Старожил


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

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


Цитата svs23:
а как создать этот элемент Move2RadioButton? »
Код: Выделить весь код
[*Code]
var
 Move2RadioButton: TNewRadioButton;

Procedure BackupCheck_1(): Boolean;
begin
 Move2RadioButton := TNewRadioButton.Create(WizardForm);
 with Move2RadioButton do
 begin
  Parent := BackupPage.Surface;
  Left := ..;
  Top := ..;
  Width := ..;
  Height := ..;
  WordWrap := True;
  Caption := 'название';
 end;
end;

Цитата svs23:
вроде везде добавил Move2 »
Из вашего примера:
Код: Выделить весь код
NoneDescLabel.Top:=Move2RadioButton.Top + Move2RadioButton.Height + 4;
NoneDescLabel.Caption:=Move2DescText;
Здесь вы присваиваете значению Top лейбла NoneDescLabel координату положения по высоте + саму высоту Move2RadioButton (которого, подозреваю, в коде вообще нет). Это не значит создать.

-------
http://forum.worldoftanks.ru/topic/1429925-/
Исходник моего установщика: https://bitbucket.org/Kotyarko_O/kmp


Последний раз редактировалось kotyarko@fb, 09-12-2014 в 01:47.

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

Отправлено: 01:37, 09-12-2014 | #2094


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


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

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


Цитата kotyarko@fb:
Здесь вы присваиваете значению Top лейбла NoneDescLabel координату положения по высоте + саму высоту Move2RadioButton (которого, подозреваю, в коде вообще нет). Это не значит создать. »
скопировать объект ума хватило, а вот переименовать.... пропустил... спс

Отправлено: 09:20, 09-12-2014 | #2095


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


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

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


и последний вопрос:как переименовать и изменить путь установки unins000.dat и unins000.exe

Отправлено: 10:10, 09-12-2014 | #2096


Аватара для kotyarko@fb

Старожил


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

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


Цитата svs23:
как переименовать и изменить путь установки unins000.dat и unins000.exe »
Переименовать примерно так:
Код: Выделить весь код
[*Code]
Procedure CurStepChanged(CurStep: TSetupStep);
begin
 if CurStep = ssPostInstall then
 begin
  RenameFile(ExpandConstant('{app}\unins000.exe'), ExpandConstant('{app}\uninstall.exe'))
  RenameFile(ExpandConstant('{app}\unins000.dat'), ExpandConstant('{app}\uninstall.dat'))
 end;
end;
А изменить путь так:
Код: Выделить весь код
[Setup]
UninstallFilesDir={app}\папка

-------
http://forum.worldoftanks.ru/topic/1429925-/
Исходник моего установщика: https://bitbucket.org/Kotyarko_O/kmp


Отправлено: 10:37, 09-12-2014 | #2097


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


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

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


рано обрадовался... была ошибка


прописал в [Files]
Source: BeforeInstall: BackupCheck_4();

теперь вот такая ошибка... тут уже не пойму что делать!?


сам бэкап

Цитата:
#define ModVer "0.9.4"
#include "SHFileOperation.iss"

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

var
BackupPage: TWizardPage;
DeleteRadioButton, MoveRadioButton, Move2RadioButton, NoneRadioButton: TNewRadioButton;

const
BackupDescText =
'Во избежание проблем совместимости и конфликтов между модификациями рекомендуется удалить уже установленные на данный момент в игровом клиенте.' #13#13 'Выберите необходимый пункт из представленных. При этом будет очищено содержимое папки "res_mods\{#ModVer}, удалена папка "res_mods\xvm" или созданы резервные копии Ваших файлов.';
DeleteDescText =
'Установщик удалит все файлы в папках.';
MoveDescText =
'Установщик сделает резервную копию всех файлов в папках.';
Move2DescText =
'Установщик сделает резервную копию только заменяемых файлов в папках.';
NoneDescText =
'Установщик оставит всё как есть.';

function BackupCheck_1(): Boolean;
var
BackupDescLabel, DeleteDescLabel, MoveDescLabel, Move2DescLabel, NoneDescLabel: TLabel;
begin
BackupPage:=CreateCustomPage(wpWelcome, 'Создание резервных копий файлов перед установкой', 'Пожалуйста, прочтите следующую важную информацию перед тем, как продолжить.');
BackupDescLabel:=TLabel.Create(WizardForm);
BackupDescLabel.Parent:=BackupPage.Surface;
BackupDescLabel.Left:=0;
BackupDescLabel.Top:=0;
BackupDescLabel.Width:=BackupPage.SurfaceWidth;
BackupDescLabel.Height:=80;
BackupDescLabel.AutoSize:=False;
BackupDescLabel.Wordwrap:=True;
BackupDescLabel.Caption:=BackupDescText;

DeleteRadioButton:=TNewRadioButton.Create(WizardForm);
DeleteRadioButton.Parent:=BackupPage.Surface;
DeleteRadioButton.Checked:=False;
DeleteRadioButton.Top:=85;
DeleteRadioButton.Width:=BackupPage.SurfaceWidth;
DeleteRadioButton.Font.Style:=[fsBold];
DeleteRadioButton.Font.Size:=9;
DeleteRadioButton.Caption:='Удалить файлы'
DeleteDescLabel:=TLabel.Create(WizardForm);
DeleteDescLabel.Parent:=BackupPage.Surface;
DeleteDescLabel.Left:=18;
DeleteDescLabel.Top:=DeleteRadioButton.Top + DeleteRadioButton.Height + 4;
DeleteDescLabel.Width:=BackupPage.SurfaceWidth;
DeleteDescLabel.Height:=40;
DeleteDescLabel.AutoSize:=False;
DeleteDescLabel.Wordwrap:=True;
DeleteDescLabel.Caption:=DeleteDescText;

MoveRadioButton:=TNewRadioButton.Create(WizardForm);
MoveRadioButton.Parent:=BackupPage.Surface;
MoveRadioButton.Checked:=False;
MoveRadioButton.Top:=125;
MoveRadioButton.Width:=BackupPage.SurfaceWidth;
MoveRadioButton.Font.Style:=[fsBold];
MoveRadioButton.Font.Size:=9;
MoveRadioButton.Caption:='Сделать резервную копию файлов'
MoveDescLabel:=TLabel.Create(WizardForm);
MoveDescLabel.Parent:=BackupPage.Surface;
MoveDescLabel.Left:=18;
MoveDescLabel.Top:=MoveRadioButton.Top + MoveRadioButton.Height + 4;
MoveDescLabel.Width:=BackupPage.SurfaceWidth;
MoveDescLabel.Height:=40;
MoveDescLabel.AutoSize:=False;
MoveDescLabel.Wordwrap:=True;
MoveDescLabel.Caption:=MoveDescText;

Move2RadioButton:=TNewRadioButton.Create(WizardForm);
Move2RadioButton.Parent:=BackupPage.Surface;
Move2RadioButton.Checked:=True;
Move2RadioButton.Top:=165;
Move2RadioButton.Width:=BackupPage.SurfaceWidth;
Move2RadioButton.Font.Style:=[fsBold];
Move2RadioButton.Font.Size:=9;
Move2RadioButton.Caption:='Обновить существующие файлы'
Move2DescLabel:=TLabel.Create(WizardForm);
Move2DescLabel.Parent:=BackupPage.Surface;
Move2DescLabel.Left:=18;
Move2DescLabel.Top:=Move2RadioButton.Top + Move2RadioButton.Height + 4;
Move2DescLabel.Width:=BackupPage.SurfaceWidth;
Move2DescLabel.Height:=40;
Move2DescLabel.AutoSize:=False;
Move2DescLabel.Wordwrap:=True;
Move2DescLabel.Caption:=Move2DescText;

NoneRadioButton:=TNewRadioButton.Create(WizardForm);
NoneRadioButton.Parent:=BackupPage.Surface;
NoneRadioButton.Checked:=False;
NoneRadioButton.Top:=205;
NoneRadioButton.Width:=BackupPage.SurfaceWidth;
NoneRadioButton.Font.Style:=[fsBold];
NoneRadioButton.Font.Size:=9;
NoneRadioButton.Caption:='Ничего не трогать'
NoneDescLabel:=TLabel.Create(WizardForm);
NoneDescLabel.Parent:=BackupPage.Surface;
NoneDescLabel.Left:=18;
NoneDescLabel.Top:=NoneRadioButton.Top + NoneRadioButton.Height + 4;
NoneDescLabel.Width:=BackupPage.SurfaceWidth;
NoneDescLabel.Height:=40;
NoneDescLabel.AutoSize:=False;
NoneDescLabel.Wordwrap:=True;
NoneDescLabel.Caption:=NoneDescText;
end;

function BackupCheck_2(): Boolean;
begin
If DeleteRadioButton.Checked then
begin
DelTree(ExpandConstant('{app}\res_mods\{#ModVer}'), True, True, True);
DelTree(ExpandConstant('{app}\res_mods\xvm'), True, True, True);
CreateDir(ExpandConstant('{app}\res_mods\{#ModVer}'));
end;
end;

function BackupCheck_3(): Boolean;
begin
If MoveRadioButton.Checked then
begin
MoveDir(ExpandConstant('{app}\res_mods\{#ModVer}\'),ExpandConstant('{app}\res_mods\backup\{#ModVer}' ));
MoveDir(ExpandConstant('{app}\res_mods\xvm\'),ExpandConstant('{app}\res_mods\backup\xvm'));
CreateDir(ExpandConstant('{app}\res_mods\{#ModVer}'));
DelTree(ExpandConstant('{app}\res_mods\xvm'), True, True, True);
end;
end;

function BackupCheck_4(): Boolean;
var
srcFile, destFile: string;
basePath, shortPath: string;
begin
If Move2RadioButton.Checked then
begin
basePath := ExpandConstant('{app}\res_mods');
srcFile := ExpandConstant(CurrentFileName);
shortPath := srcFile;
StringChangeEx(shortPath, basePath, '', True);
destFile := ExpandConstant('{app}\res_mods\Backup') + shortPath;
ForceDirectories(ExtractFilePath(destFile));
MoveFile(PChar(srcFile), PChar(destFile));
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssInstall then
begin
BackupCheck_2();
BackupCheck_3();
BackupCheck_4();
end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
CopyDir(ExpandConstant('{app}\res_mods\Backup\'),ExpandConstant('{app}\res_mods'));
DelTree(ExpandConstant('{app}\res_mods\Backup'), True, True, True);
end;
end;

Отправлено: 10:40, 09-12-2014 | #2098


Аватара для Dodakaedr

Ветеран


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

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


Цитата svs23:
как переименовать »
Скрытый текст
Код: Выделить весь код
#define UninstallName "uninstall"


[Setup]
AppId={{6A9D1594-7791-48f5-9CAA-DE9BCB968320}


[*Code]

procedure RewritingUninstallData();
var
    OldUninstallDataFile, OldUninstallString, NewUninstallDataFile, NewUninstallString,
    RegUninstallDataFile, RegUninstallString, RegQuietUninstallString, AppID: String;
begin
    OldUninstallDataFile := ExpandConstant('{uninstallexe}');
    StringChange(OldUninstallDataFile, '.exe', '.dat');
    OldUninstallString := ExpandConstant('{uninstallexe}');

    NewUninstallDataFile := ExpandConstant('{app}\{#UninstallName}.dat');
    NewUninstallString := ExpandConstant('{app}\{#UninstallName}.exe');

    if FileExists(NewUninstallDataFile) or FileExists(NewUninstallString) then
    begin
        DeleteFile(NewUninstallDataFile);
        DeleteFile(NewUninstallString);
    end;

    RenameFile(OldUninstallDataFile, NewUninstallDataFile);
    RenameFile(OldUninstallString, NewUninstallString);

    AppID := ExpandConstant('{#SetupSetting("AppId")}') + '_is1';

    RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + AppID, 'UninstallDataFile', RegUninstallDataFile);
    RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + AppID, 'UninstallString', RegUninstallString);
    RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + AppID, 'QuietUninstallString', RegQuietUninstallString);

    StringChange(RegUninstallDataFile, OldUninstallDataFile, NewUninstallDataFile);
    StringChange(RegUninstallString, OldUninstallString, NewUninstallString);
    StringChange(RegQuietUninstallString, OldUninstallString, NewUninstallString);

    RegWriteStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + AppID, 'UninstallDataFile', RegUninstallDataFile);
    RegWriteStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + AppID, 'UninstallString', RegUninstallString);
    RegWriteStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + AppID, 'QuietUninstallString', RegQuietUninstallString);
end;


procedure CurStepChanged(CurStep: TSetupStep);
begin
    case CurStep of
        ssDone: RewritingUninstallData();
    end;
end;

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


Отправлено: 10:41, 09-12-2014 | #2099


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


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

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


Цитата kotyarko@fb:
Переименовать примерно так: »
Цитата kotyarko@fb:
А изменить путь так: »
спс...

Dodakaedr,
Цитата Dodakaedr:
как переименовать »
спс, но для меня это сложновато

Отправлено: 10:44, 09-12-2014 | #2100



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34




 
Переход