Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
Доброго времени суток! Подскажите плиз, как можно у страницы типа TInputDirWizardPage отключить ворнинг о том, что папка не выбрана?
Dodakaedr
25-02-2014, 20:19
Nordek, спс
Johny777
27-02-2014, 02:23
Shkutu, перехват функции WinApi (хук). В данном случае MessageBox(W/A). Думаю по другому никак если так уж надо скрыть.
но на мой взгляд самое простое - создать пустую страницу и на ней в ручную эдит и остальное и не извращаться с вышесказанным
Debugger
27-02-2014, 07:26
Покурил мануал и нашел все описания встроенных функций в паскаль-коде. Получается для того, чтобы научиться писать паскаль-код для Inno Setup, вполне достаточно знать эти функции, описанные в хелпе и знать синтаксис языка? Сначала думал что придется учить Паскаль с нуля... Поправьте если не прав!
Johny777, спасиб. В общем-то, так и сделала - свою страницу с нужными конторолами, когда поняла, что просто так скрыть ворнинг нельзя.
Debugger, для каких-то стандартных вещей вполне хватает мануала и основ паскаля. Иногда конечно требуется что-то более сложное, вроде того же WinApi, но на мой вкус это скорее исключение (не знаю, как у других).
dr.alexa2000@vk
27-02-2014, 15:48
Не могу запаковать папку с названием {Original}, ругается на знак { , что делать?
Не могу запаковать папку с названием {Original}, ругается на знак { , что делать? »Ни слова не понял из того что ты написал. Нужно писать более развёрнуто. Что делал, какой код. Учти, могут предоставить тебе пример, но он окажется не таким какой тебе необходим - всё потому: что ты изначально не предоставил необходимую информацию для того, чтоб визуально поняли те, кто может тебе помочь.
Всё пакуется нормально:
[Files]
Source: {Original}\*; DestDir: {app}\; Flags: ignoreversion recursesubdirs createallsubdirs
[Files]
Source: {Original}\*; DestDir: {app}\{{Original}; Flags: ignoreversion recursesubdirs createallsubdirs
Dodakaedr
27-02-2014, 17:08
Как добавить программу в исключения брандмауэра windows?
Как добавить программу в исключения брандмауэра windows? »Смотри здесь (http://news.jrsoftware.org/news/innosetup/msg43799.html).
Dodakaedr
27-02-2014, 17:36
Nordek, как это оформить в секции tasks?
добавить программу в исключения брандмауэра windows? »
вот так можно
[CustomMessages]
ru.FireWallAllow=Программа установки добавит %1 в исключения брандмауэра Windows на текущем профиле (%2). Хотите продолжить?
en.FireWallAllow=Setup will now add %1 to Windows Firewall as an authorized application for the current profile (%2). Do you want to continue?
ru.FireWallAllowOk=Программа установки добавила %1 в исключения брандмауэра Windows на текущем профиле.
en.FireWallAllowOk=Setup is now an authorized application %1 for the current profile
[Code]
const
NET_FW_IP_VERSION_ANY = 2;
NET_FW_SCOPE_ALL = 0;
procedure AddFirewall(Name,AppName:string);
var
Firewall, Application: Variant;
begin
if MsgBox(ExpandConstant('{cm:FireWallAllow,'+AppName+','+GetUserNameString+'}'), mbInformation, mb_YesNo) = idNo then
Exit;
{ Create the main Windows Firewall COM Automation object }
try
Firewall := CreateOleObject('HNetCfg.FwMgr');
except
RaiseException('Please install Windows Firewall first.'#13#13'(Error ''' + GetExceptionMessage + ''' occurred)');
end;
{ Add the authorization }
Application := CreateOleObject('HNetCfg.FwAuthorizedApplication');
Application.Name := Name; //Название записи о разрешении
Application.IPVersion := NET_FW_IP_VERSION_ANY;
Application.ProcessImageFileName := AppName;//ExpandConstant('{srcexe}'); //Собственно программа
Application.Scope := NET_FW_SCOPE_ALL;
Application.Enabled := True;
Firewall.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(Application);
MsgBox(ExpandConstant('{cm:FireWallAllowOk,'+AppName+'}'), mbInformation, mb_Ok);
end;
function AddToFireWall(param:string):boolean;
begin
result:=false;
if IsComponentSelected('app1') then
AddFirewall('App 1', ExpandConstant('{app}\app1.exe'));
end;
[Run]
Filename:'';Flags: nowait; Check: AddToFireWall('setup')
Dodakaedr
27-02-2014, 18:10
Shkutu, что-то ваш код не работает. Не выскакивает окошко и не добавляет.
Dodakaedr, у меня работает, выковыривала из рабочего скрипта. Может криво скопипастила, но что у вас не работает, надо смотреть уже на вашем коде.
А вообще посмотрите стандартный пример CodeAutomation.iis (в обычном инно входят в стандартный комплект, лежит в папке Examples).
diman_21Ru
27-02-2014, 21:25
Всем привет , как можно наложить на кнопки звуки , за ответ заранее благодарю .
Ivan_009
27-02-2014, 22:01
Покажите пожалуйста пример блокировки наложенной через ботву кнопки при нехватке места на диске...
Заранее спасибо...
Как добавить программу в исключения брандмауэра windows? »
как это оформить в секции tasks? »
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
[Files]
Source: MyProg.exe; DestDir: {app};
[Tasks]
Name: frexp; Description: Добавить исключение в брандмауэр Windows;
[code]
const
NET_FW_SCOPE_ALL = 0;
NET_FW_IP_VERSION_ANY = 2;
procedure SetFirewallException(const AppName, FileName: String);
var
FirewallObject: Variant;
FirewallManager: Variant;
FirewallProfile: Variant;
begin
try
FirewallObject := CreateOleObject('HNetCfg.FwAuthorizedApplication');
FirewallObject.ProcessImageFileName := FileName;
FirewallObject.Name := AppName;
FirewallObject.Scope := NET_FW_SCOPE_ALL;
FirewallObject.IpVersion := NET_FW_IP_VERSION_ANY;
FirewallObject.Enabled := True;
FirewallManager := CreateOleObject('HNetCfg.FwMgr');
FirewallProfile := FirewallManager.LocalPolicy.CurrentProfile;
FirewallProfile.AuthorizedApplications.Add(FirewallObject);
except end;
end;
procedure RemoveFirewallException(const FileName: String );
var
FirewallManager: Variant;
FirewallProfile: Variant;
begin
try
FirewallManager := CreateOleObject('HNetCfg.FwMgr');
FirewallProfile := FirewallManager.LocalPolicy.CurrentProfile;
FireWallProfile.AuthorizedApplications.Remove(FileName);
except end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
case CurStep of
ssPostInstall: if IsTaskSelected('frexp') then SetFirewallException('My Program', ExpandConstant('{app}') + '\MyProg.exe');
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
case CurUninstallStep of
usPostUninstall: RemoveFirewallException(ExpandConstant('{app}') + '\MyProg.exe');
end;
end;
Ivan_009
27-02-2014, 22:04
diman_21Ru, Так:
Dodakaedr
27-02-2014, 22:26
saurn, Огромное спасибо!!!
dr.alexa2000@vk
28-02-2014, 11:46
Всё пакуется нормально »
Странно.У меня нет.
Source: "{app}\HD3_Data\Templates\{{Original}\patcher_x86 dump.txt"; DestDir: {app}\HD3_Data\Templates\{{Original}; MinVersion: 0.0,5.0; Flags: ignoreversion
Source: "{app}\HD3_Data\Templates\{{Original}\patcher_x86 log.txt"; DestDir: {app}\HD3_Data\Templates\{{Original}; MinVersion: 0.0,5.0; Flags: ignoreversion
Source: "{app}\HD3_Data\Templates\{{Original}\rmg.txt"; DestDir: {app}\HD3_Data\Templates\{{Original}; MinVersion: 0.0,5.0; Flags: ignoreversion
Объясняю ситуацию:есть Герои 3 HD их надо запаковать, но есть папка в которой хранятся оригинальные файлы , называется она {Original}.Выходит ошибка, т.к. эти скобки {} мешают правильно понять название папки.
Debugger
28-02-2014, 12:11
Подскажите, а можно ли передать в функцию какой-либо параметр?
Чтото типа наподобие этого:
[Components]
Name: "plugin"; Description: "plugin";
Name: "plugin\32-bit"; Description: "Plugin for productname v1.0"; Check: "checkversion32(10)"
Name: "plugin\64-bit"; Description: "plugin for productname v1.0"; Check: "checkversion64(10)"
Name: "plugin\32-bit"; Description: "Plugin for productname v2.0"; Check: "checkversion32(20)"
Name: "plugin\64-bit"; Description: "plugin for productname v2.0"; Check: "checkversion64(20)"
Name: "plugin\32-bit"; Description: "Plugin for productname v3.0"; Check: "checkversion32(30)"
Name: "plugin\64-bit"; Description: "plugin for productname v3.0"; Check: "checkversion64(30)"
[code]
function checkversion32(параметр): Boolean;
begin
Result := RegValueExists(HKLM, 'SOFTWARE\параметр\productname', 'version')
end;
function checkversion64(параметр): Boolean;
begin
Result := RegValueExists(HKLM64, 'SOFTWARE\параметр\productname', 'version')
end;
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC