Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 4]
MarkusEVO, а файл "botva2.iss" не пробовал открыть?
procedure BtnSetChecked(h :HWND; Value :boolean); external 'BtnSetChecked@{tmp}\botva2.dll stdcall delayload';
//устанвливает состояние (включена/выключена) кнопки (аналог Сheckbox.Checked:=True / Сheckbox.Checked:=False)
//h - хэндл кнопки (результат возвращенный BtnCreate)
//Value - значение состояния кнопки
В твоём случае:
if (not IsWin64) then begin
SystimeBitx32Check:=BtnCreate(WizardForm.Handle,ScaleX(75),ScaleY(363),ScaleX(28),ScaleY(28),ExpandC onstant('{tmp}\CheckBox.png'),8,True);
--------------------
--------------------
--------------------
BtnSetChecked(SystimeBitx32Check,True);
if IsWin64 then begin
SystimeBitx64Check:=BtnCreate(WizardForm.Handle,ScaleX(75),ScaleY(363),ScaleX(28),ScaleY(28),ExpandC onstant('{tmp}\CheckBox.png'),8,True);
--------------------
--------------------
--------------------
BtnSetChecked(SystimeBitx64Check,True);
valyok666
26-11-2011, 13:00
nik1967, без справок никуда ИМХО
Dark_Delphin
26-11-2011, 19:16
Всем привет.
У кого-то есть скрипт рекодингов, тот что они юзают на даный момент?
Пару строчек хотел бы увидеть)
LinkOFF, создай кнопку процедурой прикрепи к ней функцию запуска ехе файла »
Если б я знал как
Помогите мне с шифрованием архивов.Я создал архив FreeArc и поставил пароль, теперь мне нужно вписать в скрипт ISDone пароль чтоб распаковались архивы.Я облазил справку ISDone но не нашел ничего
Dark_Delphin
26-11-2011, 23:55
Rikill, вот. Плагиатить не буду..
http://i28.fastpic.ru/big/2011/1126/df/9cf7a931341707774cad36fbab4248df.png
http://i28.fastpic.ru/big/2011/1126/b5/4fa63d45c14ca81c4a8e13a9c5ef57b5.png
LinkOFF, что именно интересует в скрипте?
Gnom_aka_Lexander
27-11-2011, 17:34
Всем привет.
У кого-то есть скрипт рекодингов, тот что они юзают на даный момент?
Пару строчек хотел бы увидеть) »вот. Плагиатить не буду..
читать дальше » »
Оригинал тебе вряд-ли кто даст, а вот фейк накатать - пять минут работы в формдизайнере расширенной версии.
Вот, сляпал на скорую руку. Скачать. (http://rghost.ru/32225431)
MarkusEVO
27-11-2011, 18:52
MarkusEVO, а файл "botva2.iss" не пробовал открыть?
читать дальше » »
Благодарю, всё помогло и заработало!
R.i.m.s.k.y.
27-11-2011, 18:53
Подскажите, пожалуйста, что написать в NextButtonClick чтобы "внутренности" отрабатывались только на странице wpSelectComponents
т.е. примерно так
function NextButtonClick(CurPageID:integer): Boolean;
begin
Result:= True;
If CurPageID=wpSelectComponents then begin
...
Result:= False;
end;
end;
я знаю что в NextButtonClick нельзя проверять If CurPageID, но как это правильно сделать?
Gnom_aka_Lexander
27-11-2011, 18:59
NextButtonClick работает в момент перехода на страницу. приведенный код сработает, при переходе со страницы wpSelectComponents на следующую. А что именно нужно сделать?
Вот так будет более правильно, в моем понимании:
function NextButtonClick(CurPageID: Integer): Boolean;
begin
case CurPageID of // условия при переходе со страниц
wpSelectComponents: // со страницы выбора компонентов
begin
...
Result:= False;
end;
end;
Result:= True; // общий результат если ни одно условие не подошло
end;я знаю что в NextButtonClick нельзя проверять If CurPageID » непонятно тогда, для чего
NextButtonClick(CurPageID:integer) »
CurPageID в параметре указан по умолчанию?
Обновил пост
R.i.m.s.k.y.
27-11-2011, 19:08
Лександер, спасибо, странно почему-то не сработало
function NextButtonClick(CurPageID:integer): Boolean;
begin
Result:= True;
if (CurPageID = 7) then begin...
Gnom_aka_Lexander
27-11-2011, 19:15
спасибо, странно почему-то не сработало »
нужно само условие, которое не сработало. сам сталкиваюсь с тем, что любое неверное движение в этой функции вызывает отсутствие ожидаемого результата. Например:function NextButtonClick(CurPageID:integer): Boolean;
begin
Result:= True; »
тоесть, сперва мы разрешаем переход на следующую страницу, потом функции становится по барабану на все условия. Постом выше дал более надежное оформление условия страниц.
R.i.m.s.k.y.
27-11-2011, 19:30
Лександер, в примере вышше помоему else не хватает на общий результат если ни одно условие не подошло
Gnom_aka_Lexander
27-11-2011, 19:44
в примере вышше помоему else не хватает на общий результат если ни одно условие не подошло »
Извиняюсь, все правильно. Правильно будет так:
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result:=False;
case CurPageID of // условия при переходе со страниц
wpSelectComponents: // со страницы выбора компонентов
begin
...
Result:= False;
end;
else
Result:= True; // общий результат если ни одно условие не подошло
end;
end;
R.i.m.s.k.y.
27-11-2011, 19:51
Лександер, тогда логически неверно: сначала отрабатывает case CurPageID of wpSelectComponents: Result := false, а ниже уже Result := True!
Gnom_aka_Lexander
27-11-2011, 20:03
тогда логически неверно: »
Постом выше исправил. Для информации: при такой проверке - для каждой страницы обязательно указывать варианты для двух случаев - правда - ложь, у меня в том косяк и был - не было альтернативного условия. и косяк в итоге вылез совершенно на другой странице, поскольку все условие целиком было составлено неверно, а при правильном условии переставала работать кнопка далее на странице, на которой не было условия разрешающее переход далее :)
Raf-9600
28-11-2011, 16:38
Ктонить может подкрутить скрипт, чтоб та часть что касается возврата оригинальных файлов, запускалась только если выбран компонент "Game\Lokal\Backup", а та часть что отвечает за проверку на оставшыеся файлы, если выбран "Game\Full"?
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
Res: Integer;
//Возврат оригинальных файлов
begin
if CurUninstallStep = usPostUninstall then
begin
MoveDir(ExpandConstant('{app}\Backup\'),ExpandConstant('{app}'));
RemoveDir(ExpandConstant('{app}\Backup\'));
end;
//Проверка на оставшыеся файлы
begin
case CurUninstallStep of
usPostUninstall:
begin
if DirExists(ExpandConstant('{app}')) then
if ExpandConstant('{language}') = 'ua' then
case MsgBox('Папка "' + ExpandConstant('{app}') + '" не порожня.'#13#13 +
'"Так" – повне видалення всіх файлів у папці, включаючи саму папку.' #13#13 +
'"Ні" – відкрити папку в провіднику, щоб вручну видалити файли.'#13#13 +
'"Скасувати" – нічого не робити, видалити папку пізніше самостійно.', mbInformation, MB_YESNOCANCEL) of
IDYES:
if not DelTree(ExpandConstant('{app}'), True, True, True) then
MsgBox('Папка не видалена.' #13#13 'Папка або один з файлів у ній задіяні іншою програмою.', mbError, MB_OK);
IDNO:
if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
MsgBox('Помилка відкриття.' #13#13 'Папка не знайдена.', mbError, MB_OK);
IDCANCEL:;
end
else
if ExpandConstant('{language}') = 'ru' then
case MsgBox('Папка "' + ExpandConstant('{app}') + '" не пуста.'#13#13 +
'"Да" – полное удаление всех файлов в папке, включая саму папку.' #13#13 +
'"Нет" – открыть папку в проводнике, чтобы вручную удалить файлы.'#13#13 +
'"Отмена" – ничего не делать, удалить папку позже самостоятельно.', mbInformation, MB_YESNOCANCEL) of
IDYES:
if not DelTree(ExpandConstant('{app}'), True, True, True) then
MsgBox('Папка не удалена.' #13#13 'Папка или один из файлов в ней задействованы другим приложением.', mbError, MB_OK);
IDNO:
if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
MsgBox('Ошибка открытия.' #13#13 'Папка не найдена.', mbError, MB_OK);
IDCANCEL:;
end
else
case MsgBox('Directory "' + ExpandConstant('{app}') + '" is not empty.'#13#13 +
'"Yes" to delete all of the files in the directory, including the directory itself.' #13#13 +
'"No" to open the directory with explorer to delete the files manually.'#13#13 +
'"Cancel" to do nothing and delete the directory later manually.', mbInformation, MB_YESNOCANCEL) of
IDYES:
if not DelTree(ExpandConstant('{app}'), True, True, True) then
MsgBox('Directory is not deleted.' #13#13 'Directory or one of the files are used by the other application.', mbError, MB_OK);
IDNO:
if not ShellExec('open', ExpandConstant('{app}'), '', '', SW_SHOWMAXIMIZED, ewNoWait, Res) then
MsgBox('Error opening the directory.' #13#13 'Directory is not found.', mbError, MB_OK);
IDCANCEL:;
end
end
end
end;
end;
El Sanchez
28-11-2011, 18:58
Постом выше исправил »
Лександер, усе не так. В самом начале Result должен быть True - это результат функции по-умолчанию, else в операторе case не нужен. Если на страницах нужно что-то проверять и от результата этой проверки будет происходить\не происходить переход на следующую страницу, то обязательно нужно условие. Пример:
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
wpSelectComponents:
begin
c := a + b;
Result := c <> 20; //либо if c = 20 then Result := False;
end;
end;
end;
Перехода на wpSelectProgramGroup не произойдет, если c = 20. Result зависит от переменной с только на wpSelectComponents, для всех остальных Result = True, установленный в самом начале функции.
Dark_Delphin
28-11-2011, 20:54
Всем привет.
Подскажите пожалуйста, что это за ошибка и как исправить?
http://i31.fastpic.ru/big/2011/1128/81/a54262d44af10c57c9cd5246072e7e81.png
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.