Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 8]
El Sanchez
09-06-2015, 13:26
А через procedure CurUninstallStepChanged как? »
AlekseyPopovv,
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
CaptureFolder: String;
begin
case CurUninstallStep of
usPostUninstall:
begin
CaptureFolder := GetIniString('Splash', 'CaptureFolder', '', 'где-то там\file.ini');
if DirExists(CaptureFolder) and (MsgBox('Удалить папку?', mbConfirmation, MB_YESNO) = IDYES) then
DelTree(CaptureFolder, True, True, True);
end;
end;
end;
habib2302
09-06-2015, 21:50
Доброе время суток. как вам объяснить!? Короче. Как сделать проверку на использование команды /DIR?
Т.е инсталл запущенный с командой /DIR, то приложение указанное в разделе [Run] должно запускаться с командой (Filename: {tmp}\nsis.exe; Parameters: /D={app};)
если инсталл запущенный без команды /DIR, то приложение должно запускаться без команды (Filename: {tmp}\nsis.exe;)
kotyarko@fb
09-06-2015, 23:05
habib2302, по идеи, должно работать..:
[Run]
Filename: {tmp}\nsis.exe; Parameters: "/D={app}"; Check: DIRParamExists();
Filename: {tmp}\nsis.exe; Check: not DIRParamExists();
[*Code]
Function DIRParamExists(): Boolean;
var
I: Integer;
begin
for I := 1 to ParamCount do
case (Uppercase(ParamStr(I)) = '/DIR') of
True: Result := True
False: Result := False;
end;
end;
Но можно сделать и красивее, если в параметре "Parameters" (тавтология она такая:)) использовать команду {code:..} (если её там можно использовать вообще, точно не знаю).
El Sanchez
10-06-2015, 09:32
по идеи, должно работать »
kotyarko@fb, не будет. Если /DIR не последний параметр, то DIRParamExists вернет False. Надо так:
[Run]
Filename: {tmp}\nsis.exe; Parameters: "{code:GetDIRParam|/D=""{app}""}"
[Code]
//////////////////////////////////////////////////
function GetDIRParam(const Param: String): String;
begin
if ExpandConstant('{param:DIR|}') <> '' then
Result := Param;
end;
Okta_333
10-06-2015, 18:40
Парни, такая ситация. Хочу сделать чтобы у пользователя был выбор, устанавливать ли мод, или нет, вроде чекбокса. Мод в архиве. Если чекбокс нажат, то после основной установки пойдет установка мода, если нет, то и суда нет.
Как такое можно реализовать?
PlanktoN
12-06-2015, 00:03
Парни, проблема. Загрузил Фоновое изображение на инсталлятор через ботву. Сделал WizardForm.Innernotebook.hide и WizardForm.OuterNotebook.hide, чтобы изображение было видным, но эти параметры скрывают слова. Что надо сделать чтоб были слова и фоновая картинка одновременно. Плиз ответьте.
sergey3695
12-06-2015, 23:33
Okta_333, if Чекбокс.Checked then (а дальше распаковка архива. если используешь isdone, то читай справку)
PlanktoN, Parent:= WizardForm; и CurPageChanges (посм как правильно пишется) скрытие и показ элементов реализовывать.
kotyarko@fb
13-06-2015, 00:16
А можно имеющееся в программе изображение (загруженное через [Files]) открыть в стандартном виндовом "средстве просмотра фотографий"?
upd: разобрался.
AlekseyPopovv
13-06-2015, 09:57
Мне нужно узнать версию программы из реестра:
[HKEY_LOCAL_MACHINE\SOFTWARE\MyPrograms\Program]
"Version"="13.06.2015"
И сделать чтобы было сообщение в окошке "Версия такая такая". Или если этого параметра нет в реестре то тогда сообщение "Версия не установлена".
procedure ProgramButtonClick(Sender: TObject);
var
Hislo: String;
begin
if RegQueryStringValue(HKLM, 'SOFTWARE\MyPrograms\Program', 'Version', Hislo) and (Hislo <> '') then
if MsgBox('Версия Hislo.',mbInformation, mb_ok) = IDok then
end;
kotyarko@fb
13-06-2015, 11:50
AlekseyPopovv, procedure ProgramButtonClick(Sender: TObject);
var
Hislo: String;
begin
if RegQueryStringValue(HKLM, 'SOFTWARE\MyPrograms\Program', 'Version', Hislo) and (Hislo <> '') then
MsgBox('Версия: ' + Hislo + '.', mbInformation, mb_ok)
else
MsgBox('Версия не установлена.', mbInformation, mb_ok);
end;
PlanktoN
14-06-2015, 02:03
Sergey3695, Я не понял как это сделать. Скрипт отправь пжл.
AlekseyPopovv
14-06-2015, 09:48
Как сделать, что бы файл *.exe копировался во временную папку вместе с например "iswin7logo.dll", "botva2.dll" и т.д?
Dodakaedr
14-06-2015, 10:10
AlekseyPopovv, по тому же самому принципу что и dll-ки.
AlekseyPopovv
14-06-2015, 10:16
Dodakaedr, понял.
sergey3695
14-06-2015, 12:45
PlanktoN,
var
Label: TLabel;
procedure InitializeWizard;
begin
with WizardForm do begin
InnerNotebook.Hide;
OuterNotebook.Hide;
end;
with TLabel.Create(WizardForm) do // Будет на всех страницах надпись
begin
Caption:= 'Установка';
SetBounds(ScaleX(10),ScaleY(5),ScaleX(750),ScaleY(14));
Parent:= WizardForm;
end;
Label := TLabel.Create(WizardForm); // Можно обратиться к Label и скрыть
with Label do begin
SetBounds(ScaleX(50), ScaleY(29), ScaleX(265), ScaleY(30));
Caption := 'Description';
Parent := WizardForm;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
Label.Hide;
case CurPageID of
wpWelcome:
begin
Label.Show;
end;
end;
end;
AlekseyPopovv
14-06-2015, 13:02
Помогите пожалуйста:
procedure FullButtonClick(Sender: TObject);
var
ResultCode: Integer;
begin
// Если нет данных в реестре, то вылазит окошко "Adobe Flash Player не установлен! Всё равно запустить?" "Да" или "Нет"
if not RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPepper') then
if not RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPlugin') then
if not RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerActiveX') then
if MsgBox('Adobe Flash Player не установлен! Всё равно запустить?', mbError, mb_yesno) = IDYES then
if Exec(ExpandConstant('{tmp}\{#MyAppUninstallerNameExe}'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
else
// До сюда всё работает, а если данные есть в реестре, то деинсталлятор не запускается!
begin
if RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPepper') then
if RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPlugin') then
if RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerActiveX') then
if Exec(ExpandConstant('{tmp}\{#MyAppUninstallerNameExe}'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
end;
end;
// Чего не хватает?
kotyarko@fb
14-06-2015, 13:08
AlekseyPopovv, а так:
procedure FullButtonClick(Sender: TObject);
var
ResultCode: Integer;
begin
if not (RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPepper') and RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPlugin') and RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerActiveX')) then
begin
if MsgBox('Adobe Flash Player не установлен! Всё равно запустить?', mbError, mb_yesno) = IDYES then
Exec(ExpandConstant('{tmp}\{#MyAppUninstallerNameExe}'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
end else
begin
if (RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPepper') and RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPlugin') and RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerActiveX')) then
Exec(ExpandConstant('{tmp}\{#MyAppUninstallerNameExe}'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
end;
end;
з.ы. подучите основы языка, т.к. вы уже не первый раз используете такую неправильную конструкцию:...
if Exec(ExpandConstant('{tmp}\{#MyAppUninstallerNameExe}'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
else
...
...
if Exec(ExpandConstant('{tmp}\{#MyAppUninstallerNameExe}'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
end;
...
AlekseyPopovv
14-06-2015, 13:32
kotyarko@fb, вот так работает:
procedure FullButtonClick(Sender: TObject);
var
ResultCode: Integer;
begin
if not RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPepper') then
begin
if MsgBox('Adobe Flash Player не установлен! Всё равно запустить?', mbError, mb_yesno) = IDYES then
Exec(ExpandConstant('{tmp}\{#MyAppUninstallerNameExe}'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
end else
begin
if RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPepper') then
Exec(ExpandConstant('{tmp}\{#MyAppUninstallerNameExe}'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
end;
end;
Как тогда остальной реестр проверить?
sergey3695
14-06-2015, 15:13
AlekseyPopovv,
procedure FullButtonClick(Sender: TObject);
var
ResultCode: Integer;
begin
if (RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPepper')) and (RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerPlugin')) and (RegKeyExists(HKLM, 'SOFTWARE\Macromedia\FlashPlayerActiveX')) then
Exec(ExpandConstant('{tmp}\{#MyAppUninstallerNameExe}'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
else begin
if MsgBox('Adobe Flash Player не установлен! Всё равно запустить?', mbError, mb_yesno) = IDYES then
Exec(ExpandConstant('{tmp}\{#MyAppUninstallerNameExe}'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
end;
end;
ExpandConstant('{tmp}\{#MyAppUninstallerNameExe}') :mellow:
з.ы. подучите основы языка, т.к. вы уже не первый раз используете такую неправильную конструкцию: »
if Exec(ExpandConstant('{tmp}\{#MyAppUninstallerNameExe}'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then else »
так можно
if Exec(ExpandConstant('{tmp}\{#MyAppUninstallerNameExe}'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then end; »
в этом нет смысла
:laugh:
урок закончен.
AlekseyPopovv
14-06-2015, 18:08
sergey3695, Если Вы такой умный, это не даёт Вам повода смеяться над другими! Для этого и существует форум... Участник kotyarko@fb был прав, его код подошёл, но с поправками... Ему и спасибо от души, а Вы не в ту степь пошли, либо не поняли меня! Но тем не менее спасибо всем!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC