Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
Nightwishh
19-04-2013, 16:58
Я опять с вопросом о ComponentsDiskSpaceLabel. Как можно загрузить текст на лейбл, из "ComponentsDiskSpaceLabel"
Caption:= SetupMessage(msgComponentsDiskSpaceMBLabel); и Caption:= ComponentsDiskSpaceLabel.Caption
что-то не работают!
Mailchik
19-04-2013, 17:22
Nightwishh, [Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Code]
procedure InitializeWizard;
begin
WizardForm.WelcomeLabel1.Caption := WizardForm.ComponentsDiskSpaceLabel.Caption;
end;
elmariacci
19-04-2013, 17:58
есть вот такая часть скрипта для worldoftanks ))
папка по умолчанию: C:\Games\World_of_tanks
а папка где проверять наличие выглядит так: C:\Games\World_of_tanks\res_mods\0.8.5\audio -именно там она должна быть,иначе при установке любого из двух компонентов пропадает звук,т.к. клиент обращается к папке,где попадают только 2 файла из инсталятора.
Тоесть для проверки могу сделать компонент "zvuk",а вот как прописать путь поиска?
Или второй вариант втихую скопировать нужную папку из одной папки в другую без вмешательство пользователя?
Name: "zvuk"; Description: "Звуки(перед установкой скопируйте папку audio в res_mods\0.8.5\)"
Name: "zvuk\audio"; Description: "Звонок крита";
Name: "zvuk\zasvet"; Description: "Озвучка лампочки";
и потом в секции
[code]
function NextButtonClick(CurPageID: Integer): Boolean;
begin
if CurPageID = wpSelectComponents then
begin
if IsComponentSelected('zvuk') then Result := DirExists(AddBackslash(RemoveBackslash(WizardDirValue())) + 'audio') else Result := True;
if not Result then MsgBox('В выбранной Вами директории установки нет папки "audio"!', mbError, MB_OK);
end else Result := True;
end;
Johny777
19-04-2013, 18:03
\....\....\audio »
Хочешь вернуться на два уровня назад? Юзай FileSystemObject (он умеет многое :) ) :
[code]
function GetParentFolderName(const Path: String): String;
var
oFS: Variant;
begin
oFS := CreateOleObject('Scripting.FileSystemObject');
try
Result := oFS.GetParentFolderName(path);
except
ShowExceptionMessage();
end;
end;
procedure InitializeWizard();
begin
MsgBox(GetParentFolderName(GetParentFolderName('C:\Program Files\Adobe\Adobe After Effects CS5')), mbInformation, MB_OK);
end;
несколько примеров его использования есть в шапке темы, остальное в MSDN:
http://msdn.microsoft.com/en-us/library/aa262402%28v=vs.60%29.aspx
http://msdn.microsoft.com/en-us/library/aa265279%28v=vs.60%29.aspx
elmariacci, если я вас правильно понял, то так:
if IsComponentSelected('zvuk') then Result := DirExists(AddBackslash(RemoveBackslash(WizardDirValue())) + 'res_mods\0.8.5\audio') else Result := True;
Johny777
19-04-2013, 18:18
0.8.5 »
elmariacci эта папка всегда так называется? (В worldoftanks не гамал)
Всё верно, но эта папка всегда так называется? »
Мм, а вот об этом я что-то не подумал.
Есть вопрос, просветите неуча. Раньше версию системы через код никогда не проверял. Но тут понадобилось, чтобы некая функция вызывалась, только от версии винды 6 и выше( Тоесть Vista, 7 и т.д.)
function iWinVersion(): Boolean;
begin
GetWindowsVersionEx (Version);
if (Version.NTPlatform and (Version.Major > 5)) then
Result := true
else Result := False;
end;
Оно?
Johny777
19-04-2013, 18:33
saurn,
Держи: http://forum.oszone.net/post-2108378-1847.html
Определяемые виндовсы: Windows2000, Windows2003, WindowsXP, WindowsVista, Windows7, Windows8
UPD: если нужны только с 6. то кастрируй функцию :) :
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
type
_OSVERSIONINFO = record
dwOSVersionInfoSize: DWORD;
dwMajorVersion: DWORD;
dwMinorVersion: DWORD;
dwBuildNumber: DWORD;
dwPlatformId: DWORD;
szCSDVersion: array[0..127] of Char;
end;
function GetVersionEx(var lpVersionInformation: _OSVERSIONINFO): BOOL; external 'GetVersionEx{#A}@kernel32.dll stdcall';
function IsWin7AndNewer(): Boolean;
var
VersionInformation: _OSVERSIONINFO;
begin
VersionInformation.dwOSVersionInfoSize := SizeOf(VersionInformation);
if not GetVersionEx(VersionInformation) then Exit;
Result := VersionInformation.DwMajorVersion >= 6;
end;
PS: виста и выше это 6.что-то_там
если нужны только с семёрки то кастрируй функцию »
Да, нужно только от висты и выше. Спасибо за примеры, дальше уже разберусь :)
эта папка всегда так называется? »
Тоже никогда не играл, но думаю эти циферки зависят от версии клиента. Если имя папки аналогично фактической версии, можно выдернуть номер версии из реестра и подставлять строкой в качестве имени папки, что-то типа:
AddBackslash('res_mods') + ClientVersion + '\audio'
Хотя, это наверное уже изврат)
elmariacci
19-04-2013, 18:53
Цитата saurn:
0.8.5 »
elmariacci эта папка всегда так называется? (В worldoftanks не гамал) »
нет - это локальный патч на данный момент - дальше могут быть другие цифры типа 0.8.6 и тд
ilya_klimovich
19-04-2013, 20:02
мне кто нить отпишет как вырезать ненужные локализации???
Цитата Johny777:
на основе последнего примера »
Не хочу надокучать, но даний код скрипта не роботаэт правельно. Фото http://s3.share.te.ua/500024/dir.JPG (http://s3.share.te.ua/b500024/dir.JPG) а хотелось би http://s3.share.te.ua/500025/dir_1.JPG (http://s3.share.te.ua/b500025/dir_1.JPG)
Скрипт[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirname={pf}\My Program
Compression=none
[Files]
Source: {app}\*.*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyname; BeforeInstall: BetterInfo()
[code]
var
fLabel: TNewStaticText;
AppPath: String;
procedure BetterInfo();
var
Buff: String;
begin
Buff := ExpandConstant(CurrentFilename);
StringChange(Buff, AppPath, '');
fLabel.Caption := Buff;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
case CurStep of
ssInstall:
begin
AppPath := WizardDirValue(); // WizardForm.DirEdit.Text;
fLabel := TNewStaticText.Create(WizardForm)
with fLabel do
begin
Parent := WizardForm.FilenameLabel.Parent;
SetBounds(WizardForm.FilenameLabel.Left, ScaleY(20), WizardForm.ProgressGauge.Width, ScaleY(16));
end;
WizardForm.FilenameLabel.Hide;
end;
ssPostInstall: fLabel.Hide;
end;
end;
мне кто нить отпишет как вырезать ненужные локализации??? »
А каким боком это относится к теме форума Скрипты Inno Setup. Помощь и советы?
ilya_klimovich
19-04-2013, 20:59
а что тяжело помочь?
insombia
19-04-2013, 22:33
ilya_klimovich какая игра?
audiofeel
19-04-2013, 22:37
ilya_klimovich, мне кто нить отпишет как вырезать ненужные локализации??? »
А для чего тебе это нужно? если размер то лично мне на него плевать, а если поделка получается больше 8 гигов я вообще ее не сжимаю, относись с уважением к пользователю твоего "продукта", он ждет по два часа когда распакуется "MAX PAYNE". мне кажется НА ПЕРВОМ МЕСТЕ ПОЛЬЗОВАТЕЛЬ,а уж потом ваши "амбиции, да и многие офф патчи не поставишь без определенных файлов и тд, не гонись ты за этим. так дело пойдет у вас (понравится) вы начнете вырезать не интересные уровни из игр
ilya_klimovich
19-04-2013, 22:51
insombia
NFS Most Wanted
audiofeel
может вы и правы, но все таки?) извиняюсь за настойчивость)
insombia
19-04-2013, 22:58
ilya_klimovich там папки ru en и т д
p.s. прекращаем оффтоп
Nightwishh
20-04-2013, 04:46
Ребят, посмотрите правильно ли я накотал
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpInstalling then
begin
WizardForm.OuterNotebook.Hide;
WizardForm.ProgressGauge.Show;
SplashImage.Show;
end else
begin
WizardForm.ProgressGauge.Hide;
SplashImage.Hide;
Wizardform.OuterNotebook.Show;
end;
end;
Смысл это процедуры таков. При переходе на страницу установки, скрывалась "OuterNotebook", слайд шоу (SplashImage) и прогресс бар показывались, а после установки это исчезало (сплеш и прогрессбар) и дальше всё как обычно (переход на финиш паге)! Спасибо!
Nightwishh, про Parent прогресс-бара забыли, а то он сныкается вместе с внешним Notebook.
procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpInstalling:
begin
WizardForm.ProgressGauge.Parent := WizardForm;
WizardForm.OuterNotebook.Hide;
WizardForm.Bevel.Hide;
SplashImage.Show;
end;
wpFinished:
begin
WizardForm.ProgressGauge.Hide;
SplashImage.Hide;
SplashImage.Free;
WizardForm.OuterNotebook.Show;
WizardForm.Bevel.Show;
end;
end;
end;
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.