Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]
kotyarko@fb
К сожалению, не удаляется dll - ка....
А нет, все ок, просто деинсталятор запускал из под Total Commander и поэтому библиотека не удалялась.
помогите с кодом...
суть: при наведении мыши на пункт в меню выбора файлов для установки показывать доп. информацию и скрин в отдельном окне
http://i077.radikal.ru/1412/f0/45614794cf1at.jpg (http://radikal.ru/fp/1b751805146641a0b165c2c967c7781b)
со скрином разобрался, помогите добавить текст...
и еще вопрос, у меня почему-то картинки прозрачные какие-то, как исправить? (вопрос решен ALPHA_BLEND_LEVEL = 255; ) спс saneksanek
http://s018.radikal.ru/i510/1412/20/26bf7b3a3d47t.jpg (http://radikal.ru/fp/f507eb6f2d8f497e84dd66034cb40277)
saneksanek
07-12-2014, 23:50
svs23, А вы не думали что текст уже по верх скриншота?
и еще вопрос, у меня почему-то картинки прозрачные какие-то, как исправить? »
В своем коде измените параметры ALPHA_BLEND_LEVEL = 255;
А вы не думали что текст уже по верх скриншота?
так что это банально в то же пеинте (фотошопе) сделано?! просто на картинке текст написали? я то думал что это в скрипте прописали.... ах ах
или я что-то не так понял из вашей фразы?!
p.s: за ALPHA_BLEND_LEVEL = 255; спс
очередной вопрос:
возможно где-нибудь, например, в [Setup] или #define или еще где-то прописать константу версии (название папки в res_mods) игры (в данном случае 0.9.4) чтобы потом в коде ссылаться на нее {...}, а не исправлять код после каждого обновления?
решено: Код:
#define ModVer "0.9.4"
Вызывается {#ModVer}
спс Dodakaedr saurn
Dodakaedr
08-12-2014, 10:40
возможно где-нибудь, например, в [Setup] или #define или еще где-то прописать константу версии »
#define ModVer "0.9.4"
Вызывается {#ModVer}
Вызывается {#ModVer} »
вылетает ошибка
http://s012.radikal.ru/i319/1412/22/8a6ec292ecb0.jpg (http://www.radikal.ru)
Dodakaedr
08-12-2014, 11:51
svs23, Покажите строку где вызываете {#ModVer}. У меня все работает #define ModVer "0.9.4"
//====={ Сюда прописываешь те файлы и папки которые закинул в Mods }=====\\
[Types]
Name: custom; Description: Full installation; Flags: iscustom
[Components]
Name: VGMP; Description: {#ModVer}; Types: custom; Flags: fixed
вылетает ошибка »
Константа ModVer должна быть объявлена перед подключение Components.iss
#define ModVer "0.9.4"
#include Components.iss
Константа ModVer должна быть объявлена перед подключение Components.iss
Код:
#define ModVer "0.9.4"
#include Components.iss »
помогло... спс
добавить 4 пункт в BackUpPage »
Если еще актуально:
[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp
[CustomMessages]
MSG_01=Резервные копии
MSG_02=
MSG_03=Во избежание проблем совместимости и конфликтов между модификациями рекомендуется удалить уже установленные на данный момент в игровом клиенте.%n%nВыберите необходимый пункт из представленных. При этом будет очищено содержимое папки "res_mods\0.9.4, удалена папка "res_mods\xvm" или созданы резервные копии Ваших файлов.
MSG_04=Удалить файлы
MSG_05=Сделать резервную копию файлов
MSG_06=Обновить существующие файлы
MSG_07=Ничего не трогать
MSG_08=Установщик удалит все файлы в папках.
MSG_09=Установщик сделает резервную копию всех файлов в папках.
MSG_10=Установщик создаст копию только заменяемых файлов.
MSG_11=Установщик оставит всё как есть.
[code]
var
BackupOptionsPage: TWizardPage;
ArrayRadio: array of TRadioButton;
function CreateBackupOptionsPage( const nPageId: Integer ): TWizardPage;
var
i: Integer;
Len: Integer;
begin
BackupOptionsPage := CreateCustomPage( nPageId, CustomMessage( 'MSG_01' ), CustomMessage( 'MSG_02' ) );
with BackupOptionsPage do
begin
with TNewStaticText.Create( nil ) do
begin
Parent := Surface;
SetBounds( ScaleX( 0 ), ScaleY( 0 ), ScaleX( 417 ), ScaleY( 98 ) );
AutoSize := False;
Caption := CustomMessage( 'MSG_03' );
Transparent := True;
WordWrap := True;
end;
SetArrayLength( ArrayRadio, 4 );
Len := GetArrayLength( ArrayRadio ) - 1;
for i := 0 to Len do
begin
ArrayRadio[i] := TRadioButton.Create( nil );
with ArrayRadio[i] do
begin
Parent := Surface;
SetBounds( ScaleX( 0 ), ScaleY( 102 + i * 32 ), ScaleX( 417 ), ScaleY( 17 ) );
Font.Style := [fsBold];
case i of
0: Caption := CustomMessage( 'MSG_04' );
1:
begin
Caption := CustomMessage( 'MSG_05' );
Checked := True;
end;
2: Caption := CustomMessage( 'MSG_06' );
Len: Caption := CustomMessage( 'MSG_07' );
end;
end;
end;
for i := 0 to 3 do
with TNewStaticText.Create( nil ) do
begin
Parent := Surface;
SetBounds( ScaleX( 17 ), ScaleY( 118 + i * 32 ), ScaleX( 417 ), ScaleY( 17 ) );
case i of
0: Caption := CustomMessage( 'MSG_08' );
1: Caption := CustomMessage( 'MSG_09' );
2: Caption := CustomMessage( 'MSG_10' );
3: Caption := CustomMessage( 'MSG_11' );
end;
end;
end;
Result := BackupOptionsPage.ID;
end;
procedure InitializeWizard();
begin
CreateBackupOptionsPage( wpSelectDir );
end;
//Проверить, отмечена ли нужная радио кнопка // для теста
function NextButtonClick( CurPageID: Integer ): Boolean;
begin
case PageFromID( CurPageID ) of
BackupOptionsPage: if ArrayRadio[1].Checked then //По индексу от 0 до 4
MsgBox( ArrayRadio[1].Caption, mbInformation, MB_OK );
end;
Result := True;
end;
К функциям, думаю, привяжете сами.
помогите исправить ошибку
#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;
вот сама ошибка при запуске .ехе
http://i074.radikal.ru/1412/ef/b8314aae7552.jpg (http://www.radikal.ru)
Если еще актуально:
К функциям, думаю, привяжете сами. »
спс уже сам сделал, а вот с привязкой не получается...
svs23, в строке 268 обращение к элементу Move2RadioButton, которого не существует. Внимательно пересмотрите весь скрипт.
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;
х.з что еще надо!
плиз хелп
kotyarko@fb
09-12-2014, 01:37
а как создать этот элемент 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;
вроде везде добавил Move2 » Из вашего примера:NoneDescLabel.Top:=Move2RadioButton.Top + Move2RadioButton.Height + 4;
NoneDescLabel.Caption:=Move2DescText;
Здесь вы присваиваете значению Top лейбла NoneDescLabel координату положения по высоте + саму высоту Move2RadioButton (которого, подозреваю, в коде вообще нет). Это не значит создать.
Здесь вы присваиваете значению Top лейбла NoneDescLabel координату положения по высоте + саму высоту Move2RadioButton (которого, подозреваю, в коде вообще нет). Это не значит создать. »
скопировать объект ума хватило, а вот переименовать.... пропустил... спс
и последний вопрос:как переименовать и изменить путь установки unins000.dat и unins000.exe
kotyarko@fb
09-12-2014, 10:37
как переименовать и изменить путь установки 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://s013.radikal.ru/i325/1412/ae/83b215a160e8.jpg (http://www.radikal.ru)
прописал в [Files]
Source: BeforeInstall: BackupCheck_4();
теперь вот такая ошибка... тут уже не пойму что делать!?
http://s017.radikal.ru/i418/1412/ab/5fda59d966fd.jpg (http://www.radikal.ru)
#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;
Dodakaedr
09-12-2014, 10:41
как переименовать »
#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;
Переименовать примерно так: »
А изменить путь так: »
спс...
Dodakaedr, как переименовать »
спс, но для меня это сложновато ;)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC