PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 9]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [26] 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

Nordek
31-01-2020, 22:40
Beavimo, Смотрите прикреплённый файл.

Beavimo
31-01-2020, 22:49
Nordek, :clapping: :closed-to

Nordek
01-02-2020, 00:10
Beavimo, В справке аналогично написано, что собственно nik1967: Вам предложил сделать.

Можно иначе - Проявить смекалку и подсмотреть путь:
[Code]
var
Edit1: TNewEdit;

procedure InitializeWizard();
begin
Edit1 := TNewEdit.Create(WizardForm);
with Edit1 do
begin
Parent := WizardForm;
SetBounds(ScaleX(8), ScaleY(328), ScaleX(280), ScaleY(21));
Text := ExpandConstant('{localappdata}');
end;
end;

ZVSRus
01-02-2020, 09:17
Beavimo,

[InstallDelete]
Type: files; Name: "{userappdata}\Roaming\TEST\run.pid"


А так


[InstallDelete]
Type: files; Name: "{userappdata}\TEST\run.pid"

Beavimo
01-02-2020, 11:20
Вопрос Знатокам :search:! Дошел до деинсталлятора, я так понимаю переименовать (unins000.exe) не получится, и есть ли возможность не создавать (unins000.dat)? Также интересует, можно ли в файле (unins000.exe) поменять описание файла, и его версию?

nik1967
01-02-2020, 13:51
есть ли возможность не создавать »
Опять же справка.

[Setup]: Uninstallable
Возможные значения:
yes или no, или логические выражения
Значение по умолчанию:
yes

Описание:
Inno Setup определяет, создавать ли автоматический деинсталлятор. При значении yes или логического выражения True он создается. Иначе автоматическое удаление будет невозможно, так что пользователь должен будет вручную удалять программу.

Например:
[Setup]
Uninstallable=not IsTaskSelected('portablemode')

[Tasks]
Name: portablemode; Описание: "Portable Mode"

Beavimo
01-02-2020, 16:24
nik1967, это совсем не то. у файла (unins000.exe) есть описание файла, в моем случае (Setup/Unistall), и версия (51.1052.0.0), возможно ли подставить свои значения.

ZVSRus
01-02-2020, 17:46
https://b.radikal.ru/b12/2002/b0/d19f19973b33t.jpg (https://b.radikal.ru/b12/2002/b0/d19f19973b33.png) https://a.radikal.ru/a34/2002/c8/677539a2a9dbt.jpg (https://a.radikal.ru/a34/2002/c8/677539a2a9db.png)

Beavimo
01-02-2020, 19:28
ZVSRus, :lol: спасибо разсмешыл, вот я спаршую возможно сделать так как у вас на картинке из под Инно, я только учусь, есть люди которые знают намного больше, и просто ответят нет низя потому что знают это, и мне день сохранят на изучение, потому как поиск не дает положытельного результата по этой теме.

Beavimo
01-02-2020, 19:43
мож подскажыте как довести этот код до ума

procedure CurStepChanged(CurStep: TSetupStep); var
RC: Integer;
SIn, SOut: String;
begin
if CurStep=ssInstall then
begin
Exec(ExpandConstant('netsh.exe'), 'advfirewall firewall delete rule name="TEST"','', SW_HIDE, ewWaitUntilTerminated, RC)
SIn:='advfirewall firewall add rule name="TEST" dir=in action=block program='+ExpandConstant('"{app}\TEST.exe"')+' enable=yes'; Exec('netsh', SIn,'', SW_HIDE, ewWaitUntilTerminated, RC)
SOut:='advfirewall firewall add rule name="TEST" dir=out action=block program='+ExpandConstant('"{app}\TEST.exe"')+' enable=yes'; Exec('netsh', SOut,'', SW_HIDE, ewWaitUntilTerminated, RC)
end
end;

он удаляет правило при повторной установке, думаю не надо объяснять для чего я так сделал... а как зделать так чтобы при повторной установке он искал правило по имени, и в случае если оно уже есть то if........then Result:=True, в противном случае else устанавливал правило в брандмауэр? а так он постоянно удаляет и ставит по новой из за чего инсталятор подтупливает

ZVSRus
01-02-2020, 19:51
Beavimo, Директив для деинстоллятора, таких например как для инсталлятора

VersionInfoVersion={#MyAppVersion}
VersionInfoProductVersion={#MyAppVersion}
VersionInfoCompany={#MyAppPublisher}
VersionInfoDescription={#MyAppDisplayName} Setup
VersionInfoProductName={#MyAppDisplayName}
VersionInfoCopyright={#MyAppInfoCopyrightName}

Нет.

Если уж делать то только ручками на редакторах ресурсов.

Ну просто любопытство распирает, для каких надобностей сие художества?

Beavimo
01-02-2020, 19:56
ZVSRus, да дурак я просто вот и все, наверное поговорить охота :tongue:

Iska
01-02-2020, 20:07
Beavimo, Вы напрасно ёрничаете — тезис «задача может не нуждаться в выбранном решении»™ никто не отменял.

Beavimo
01-02-2020, 20:12
ёрничаете » я пас

страница ни о чем, как это бесит когда чтото ищешь

Beavimo
01-02-2020, 21:12
вот так выехал на инно вместо батника

[Setup]
AppName=TEST
AppVerName=TEST
CreateAppDir=no
Uninstallable=no
OutputDir=userdocs:..\Desktop

[\Code]
function ShowWindow(hWnd: HWND; nCmdShow: Integer): BOOL; external 'ShowWindow@user32.dll stdcall'; const
BM_CLICK = $00F5;
procedure CurPageChanged(CurPageID: Integer);
begin
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), SW_HIDE);
PostMessage(WizardForm.NextButton.Handle, BM_CLICK, 0, 0);
end;// Спрятать окно инсталятора

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
RegDeleteKeyIncludingSubkeys(HKLM,'SOFTWARE\TEST');// Удаляет ветку реестра перед установкой
RegDeleteKeyIncludingSubkeys(HKLM64,'SOFTWARE\TEST');// Удаляет ветку реестра перед установкой
DelTree(ExpandConstant('{userappdata}\TEST'), True, True, True);// Удаляет папку перед установкой
end;

[Run]
Filename: "{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Inno Setup 6_is1,Inno Setup: App Path}\Examples\MyProg.exe"; Flags: postinstall shellexec skipifsilent

теперь з данным батником можна крепить ярлыки на панель задач, сбрасывать триал програм и самое важное вирус тотал молчит
тока интересно как поведет себя сее творение на 32-х битных системах

Nordek
02-02-2020, 02:38
есть люди которые знают намного больше »Для базовой настройки: К Inno Setup доустановите Inno Script Studio (https://www.kymoto.org/products/inno-script-studio/downloads) - Какая-то часть вопросов отпадёт.
P.S В настройках Inno Script Studio, не забудьте указать путь к компилятору Inno Setup.

как поведет себя сее творение на 32-х битных системах »Проверку нужно добавить чтоб ошибку не выводил на "HKLM64,'SOFTWARE...".

Gnom_aka_Lexander
03-02-2020, 00:05
Можно просто поиграться флагами в секции Registry
deletekey
Когда установлен этот флаг, инсталлятор сначала попытается удалить ключ, если он существует, со всеми его параметрами и разделами. Если ValueType=none, после этого он создаст новый ключ и параметр.

Для предотвращения негативных последствий, этот флаг игнорируется при установке, если Subkey пустой или состоит только из бэкслешей.

deletevalue
Когда установлен этот флаг, инсталлятор сначала попытается удалить параметр, если он существует. Если параметр ValueType не равен none, после этого он создаст ключ, если он не существует, и новый параметр.

dontcreatekey
Когда установлен этот флаг, инсталлятор не будет пытаться создать ключ или любой параметр, если ключ уже не существует в системе пользователя. Инсталлятор не выдаст сообщений об ошобке, если ключ не существует.

Обычно этот флаг используется в комбинации с флагом uninsdeletekey для удаления ключей во время установки, но не создания их в течение установки.

Beavimo
03-02-2020, 12:23
Nordek
Проверку нужно добавить чтоб ошибку не выводил на "HKLM64,'SOFTWARE...". Вы имеете в виду, проверку на битность системы?

Beavimo
03-02-2020, 18:58
Nordek,

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
DelTree(ExpandConstant('{userappdata}\TEST'), True, True, True);
If not IsWin64 then
RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\TEST');
If IsWin64 then
RegDeleteKeyIncludingSubkeys(HKLM64, 'SOFTWARE\TEST');
end;

вот так, потому как нету в наличии 32-ой системы? Зарание Благодарю!

Nordek
03-02-2020, 20:54
Beavimo, Направление верное. Только вам достаточно проверки для HKLM64. Для HKLM не нужна - Учитывая что работа с HKLM вам будет необходима и в 64-разрядной операционной системе, иначе в 64-разрядной операционной системе HKLM будет пропускаться.

нету в наличии 32-ой системы? »На заметку: Если компьютер позволяет, можно использовать виртуальную машину с Windows для проверки.
P.S. У меня на реальной машине осталась только Windows 7 32-разрядная. Из под Linux в виртуальной машине только Windows 10 обеих разрядностей (32-разрядная и 64-разрядная).




© OSzone.net 2001-2012