Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
Ivan_009
03-02-2014, 22:42
Как удалить иконку в левом верхнем углу... »
Собственно не нашел как удалить. Зато можно сменить, чтобы ее невидно совсем было...
Может кому пригодится :wink:
А можно ли кнопку добавить к сохранением папки модов ? »
Можно кнопку, можно и страницу:
#define CUR_DIR "res-mods"
#define BAK_DIR "old_res-mods"
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=.
[Files]
Source: C:\Windows\Fonts\*; DestDir: {app}\res-mods; Flags: external overwritereadonly ignoreversion;
[Code]
#define A = (Defined UNICODE) ? "W" : "A"
function MoveFile(const srcFile, destFile: PAnsiChar): Integer; external 'MoveFile{#A}@kernel32.dll stdcall';
var
pageBackup: TInputDirWizardPage;
procedure IsBackup(const FromDir: String; const ToDir: String);
var
fileArray: array of String;
FindFiles: TFindRec;
i, Len: Integer;
begin
fileArray := ['*'];
Len := GetArrayLength(fileArray) - 1;
for i := 0 to Len do
begin
if FindFirst(FromDir + fileArray[i], FindFiles) then
try
WizardForm.ProgressGauge.Hide;
WizardForm.StatusLabel.Caption := 'Создание резервной копии файлов...';
repeat
if not DirExists(ToDir) then CreateDir(ToDir);
MoveFile(FromDir + FindFiles.Name, ToDir + FindFiles.Name);
until not FindNext(FindFiles);
finally
WizardForm.ProgressGauge.Show;
FindClose(FindFiles);
end;
end;
end;
function CreateBackupPage(const AfterID: Integer): TInputDirWizardPage;
begin
Result := CreateInputDirPage(AfterID,
'Резервное копирование',
'Создание резервных копий перезаписываемых файлов.',
'Укажите папку, в которую будут помещены резервные копии оригинальных файлов.',
False, 'Новая папка');
with Result do
begin
Add('Папка резервных копий:');
Values[0] := AddBackslash(WizardDirValue()) + '{#BAK_DIR}';
end;
end;
procedure InitializeWizard();
begin
if DirExists(AddBackslash(WizardDirValue()) + '{#CUR_DIR}') then
pageBackup := CreateBackupPage(6);
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
case CurStep of
ssInstall: if DirExists(ExpandConstant('{app}\{#CUR_DIR}')) then
IsBackup(ExpandConstant('{app}\{#CUR_DIR}\'), AddBackslash(pageBackup.Values[0]));
end;
end;
Ivan_009
03-02-2014, 23:54
Как можно удалить Меню «О программе». Зарание спасибо...
Проще говоря все это меню...
Как можно удалить Меню «О программе». Зарание спасибо...
Проще говоря все это меню... »
как вариант можно изменить
http://forum.oszone.net/post-1660375-1363.html
PerfectLove
04-02-2014, 02:03
Как сменить цвет текста Caption?
// backup
[Code]
#define A = (Defined UNICODE) ? "W" : "A"
function MoveDir(const srcFile, destFile: PAnsiChar): Integer; external 'MoveFileA@kernel32.dll stdcall';
var
arrayChk: array of TCheckBox;
function ChkChecked(const Index: Integer): Boolean;
var
Len: Integer;
begin
Len := GetArrayLength(arrayChk) - 1;
if Index > Len then Exit;
Result := arrayChk[Index].Checked;
end;
procedure CreateBackup();
var
FindDir: TFindRec;
i, Len: Integer;
Dir: array of string;
MyDir, BackDir: string;
begin
Len := GetArrayLength(arrayChk) - 1;
if (ChkChecked(0) and ChkChecked(Len)) then Exit; //Если выбраны оба чекбокса резервная копия создана не будет
if ChkChecked(0) then Dir := ['*']; //Резервное копирование папки
if ChkChecked(Len) then Dir := ['xvm']; //Резервное копирование определенных файлов
MyDir:=ExpandConstant('{app}\res_mods'+'\');
BackDir:=ExpandConstant('{app}'+'\Backup\');
for i:=0 to GetArrayLength(Dir)-1 do
begin
if FindFirst(MyDir + Dir[i], FindDir) then
begin
if FindFirst(MyDir+Dir[i], FindDir) then begin
repeat
if not DirExists(BackDir) then begin
CreateDir(BackDir);
end;
MoveDir(MyDir+FindDir.Name, BackDir+FindDir.Name);
until not FindNext(FindDir);
FindClose(FindDir);
end;
end;
end;
end;
procedure CreateChk();
var
i, Len: Integer;
begin
SetArrayLength(arrayChk, 2);
Len := GetArrayLength(arrayChk) - 1;
for i := 0 to Len do
begin
arrayChk[i] := TCheckBox.Create(nil);
with arrayChk[i] do
begin
Parent := WizardForm.SelectDirPage;
SetBounds(ScaleX(0), ScaleY(100 + i*24), ScaleX(400), ScaleY(15));
Color := clGreen;
case i of
0: Caption := 'Backup res_mods folder';
Len: Caption := 'Backup xvm folder only';
end;
end;
end;
end;
procedure InitializeWizard4();
begin
CreateChk();
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
Len: Integer;
begin
Len := GetArrayLength(arrayChk) - 1;
case CurStep of
ssInstall: if (ChkChecked(0) or ChkChecked(Len)) then CreateBackup();
end;
end
Всем привет.
Кому не сложно подскажите, какой код отвечает за фунцию вывода сообщений: "Вы действительно хотите удалить программу?" и "Программа была полностью удалена с Вашего копьютера."
diman_21Ru
04-02-2014, 10:48
saurn ,резервную папки модов сохраняет а как сюда добавить значек ?
удалить Меню «О программе». »
Примерно:
[Code]
function AppendMenu(hMenu: HMENU; uFlags, uIDNewItem: UINT; lpNewItem: PChar): BOOL; external 'AppendMenuA@user32.dll stdcall';
function GetSystemMenu(hWnd: HWND; bRevert: BOOL): HMENU; external 'GetSystemMenu@user32.dll stdcall';
const
MF_DELETE = $200;
procedure InitializeWizard();
begin
if not AppendMenu(GetSystemMenu(Wizardform.Handle, True), MF_DELETE, 0, '') then
end;
Как сменить цвет текста »
begin
Parent := WizardForm.SelectDirPage;
SetBounds(ScaleX(0), ScaleY(100 + i*24), ScaleX(400), ScaleY(15));
Color := clRed;
case i of
0: Caption := 'Backup res_mods folder';
Len: Caption := 'Backup xvm folder only';
end;
end;
сообщений: "Вы действительно хотите удалить программу?" и "Программа была полностью удалена с Вашего копьютера." »
[Messages]
UninstallAppFullTitle=Деинсталляция — %1
ConfirmUninstall=Вы действительно хотите удалить %1 и все компоненты программы?
UninstalledAll=Программа %1 была полностью удалена с вашего компьютера.
Ivan_009
04-02-2014, 11:33
Как сменить эту надпись
diman_21Ru
04-02-2014, 11:37
разве не AppName=
Как сменить эту надпись »
На выбор:
[Messages]
SetupWindowTitle=Установка — %1
[Messages]
SetupWindowTitle=Установка — {#AppName}
[Messages]
SetupWindowTitle=%1
[Messages]
SetupWindowTitle={#AppName}
Nordek, :no: Ты меня не так понял. Мне нужно через код.
procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
begin
Cancel:=False;
Confirm:=False;
if MsgBox('Вы действительно хотите отменить установку My_Program?', mbError, MB_YESNO) = idYes
then
Cancel:=true;
end;
Нужно точно так же, но только с формами: "Вы действительно хотите удалить программу?" и "Программа была полностью удалена с Вашего копьютера." :spiteful:
diman_21Ru
04-02-2014, 14:03
Подскажите пожалуйста вот есть код резервную папку res_mods сохраняет , но как можно добавить значек вот сюда ?
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=.
[Files]
Source: C:\Windows\Fonts\*; DestDir: {app}\res-mods; Flags: external overwritereadonly ignoreversion;
[Code]
#define A = (Defined UNICODE) ? "W" : "A"
function MoveFile(const srcFile, destFile: PAnsiChar): Integer; external 'MoveFile{#A}@kernel32.dll stdcall';
procedure IsBackup(const FromDir: String; const ToDir: String);
var
fileArray: array of String;
FindFiles: TFindRec;
i, Len: Integer;
begin
if not DirExists(FromDir) then Exit;
fileArray := ['*'];
Len := GetArrayLength(fileArray) - 1;
for i := 0 to Len do
begin
if FindFirst(FromDir + fileArray[i], FindFiles) then
try
repeat
if not DirExists(ToDir) then CreateDir(ToDir);
MoveFile(FromDir + FindFiles.Name, ToDir + FindFiles.Name);
until not FindNext(FindFiles);
finally
FindClose(FindFiles);
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
case CurStep of
ssInstall: IsBackup(ExpandConstant('{app}\res-mods\'), ExpandConstant('{app}\Backup\'));
end;
end;
добавить значек ? »
[Files]
Source: icon.ico; Flags: dontcopy solidbreak
[Code]
var
IconImage: TNewIconImage;
procedure InitializeWizard();
begin
IconImage := TNewIconImage.Create(WizardForm);
with IconImage do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0); // Положение слева
Top := ScaleY(184); // Положение сверху
Width := ScaleX(32); // Ширина значка
Height := ScaleY(32); // Высота значка
ExtractTemporaryFile('icon.ico');
Icon.LoadFromFile(ExpandConstant('{tmp}\icon.ico'));
end;
end;
diman_21Ru, Твоя очередь когда нибудь придёт - У тебя два варианта: Либо ждать, либо самому делать - а не плодить сообщения.
есть код »Слышал когда нибудь такое "bbcode (http://forum.oszone.net/misc.php?do=bbcode)"?
Захвати свой код в тег - здесь (http://forum.oszone.net/post-2270836-1700.html) написано как это делается, и спрячь под спойлер тегом . Учись - у тебя есть (http://forum.oszone.net/forum-26.html) возможность.
diman_21Ru
04-02-2014, 15:15
Nordek,сори за назойливость крайне срочно нужна кнопка :)
diman_21Ru, В коде обрати внимание на Parent := WizardForm.SelectDirPage;
меняешь значения в зависимости от того на какой странице хочешь чтоб отображалось, например:
Parent := WizardForm.SelectDirPage; // На странице выбора папки установки
Parent := WizardForm.SelectProgramGroupPage; // На странице выбора папки меню пуск
Parent := WizardForm.SelectComponentsPage; // На странице компонентов
Parent := WizardForm.SelectTasksPage; // На странице задач
innot20
читать дальше » »
а возможно ли это вывести при выборе папки установки?
diman_21Ru
04-02-2014, 18:24
Код на резервные копии папки res_mods не работает вместо этого он добавляет шрифты какие то (
использовал код #2113
а возможно ли это вывести при выборе папки установки? »
Конечно.
#define CUR_DIR "res-mods"
#define BAK_DIR "old_res-mods"
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=.
[Files]
Source: C:\Windows\Fonts\*; DestDir: {app}\res-mods; Flags: external overwritereadonly ignoreversion;
[Code]
#define A = (Defined UNICODE) ? "W" : "A"
function MoveFile(const srcFile, destFile: PAnsiChar): Integer; external 'MoveFile{#A}@kernel32.dll stdcall';
var
backupChk: TCheckBox;
procedure IsBackup(const FromDir: String; const ToDir: String);
var
fileArray: array of String;
FindFiles: TFindRec;
i, Len: Integer;
begin
fileArray := ['*'];
Len := GetArrayLength(fileArray) - 1;
for i := 0 to Len do
begin
if FindFirst(FromDir + fileArray[i], FindFiles) then
try
WizardForm.ProgressGauge.Hide;
WizardForm.StatusLabel.Caption := 'Создание резервной копии файлов...';
repeat
if not DirExists(ToDir) then CreateDir(ToDir);
MoveFile(FromDir + FindFiles.Name, ToDir + FindFiles.Name);
until not FindNext(FindFiles);
finally
WizardForm.ProgressGauge.Show;
FindClose(FindFiles);
end;
end;
end;
procedure InitializeWizard();
var
ThereIsFolder: Boolean;
begin
backupChk := nil;
ThereIsFolder := DirExists(AddBackslash(WizardDirValue()) + '{#CUR_DIR}');
if ThereIsFolder then
begin
backupChk := TCheckBox.Create(nil);
with backupChk do
begin
Parent := WizardForm.SelectDirPage;
SetBounds(ScaleX(WizardForm.DirEdit.Left), ScaleY(WizardForm.DirEdit.Top + 40), ScaleX(WizardForm.DirEdit.Width), ScaleY(15));
Caption := 'Сохранить резервную копию перезаписываемых файлов';
Checked := ThereIsFolder;
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
case CurStep of
ssInstall: if backupChk <> nil then
if backupChk.Checked then
IsBackup(ExpandConstant('{app}\{#CUR_DIR}\'), ExpandConstant('{app}\{#BAK_DIR}\'));
end;
end;
Код на резервные копии папки res_mods не работает вместо этого он добавляет шрифты какие то (
использовал код #2113 »
Потому что это пример, и для примера он устанавливает шрифты из системной папки, и при повторной установке делает их резервную копию, только для того, чтобы показать вам, как этот механизм работает. Имена папок, которые нужно бэкапить, указывайте сами.
добавить значек вот сюда ? »
Под спойлером.
sergey3695
04-02-2014, 21:12
При использовании
const
ID_ASTERISK = 65583;
...
Icon.Handle := ID_ASTERISK;
на 7 и 8 все норм. а на xp отображается другая иконка. Если даже сделать проверку на систему, то какое значение должна принимать иконка на xp?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC