Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 9]
Beavimo, Смотрите прикреплённый файл.
Nordek, :clapping: :closed-to
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;
Beavimo,
[InstallDelete]
Type: files; Name: "{userappdata}\Roaming\TEST\run.pid"
А так
[InstallDelete]
Type: files; Name: "{userappdata}\TEST\run.pid"
Вопрос Знатокам :search:! Дошел до деинсталлятора, я так понимаю переименовать (unins000.exe) не получится, и есть ли возможность не создавать (unins000.dat)? Также интересует, можно ли в файле (unins000.exe) поменять описание файла, и его версию?
есть ли возможность не создавать »
Опять же справка.
[Setup]: Uninstallable
Возможные значения:
yes или no, или логические выражения
Значение по умолчанию:
yes
Описание:
Inno Setup определяет, создавать ли автоматический деинсталлятор. При значении yes или логического выражения True он создается. Иначе автоматическое удаление будет невозможно, так что пользователь должен будет вручную удалять программу.
Например:
[Setup]
Uninstallable=not IsTaskSelected('portablemode')
[Tasks]
Name: portablemode; Описание: "Portable Mode"
nik1967, это совсем не то. у файла (unins000.exe) есть описание файла, в моем случае (Setup/Unistall), и версия (51.1052.0.0), возможно ли подставить свои значения.
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)
ZVSRus, :lol: спасибо разсмешыл, вот я спаршую возможно сделать так как у вас на картинке из под Инно, я только учусь, есть люди которые знают намного больше, и просто ответят нет низя потому что знают это, и мне день сохранят на изучение, потому как поиск не дает положытельного результата по этой теме.
мож подскажыте как довести этот код до ума
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 устанавливал правило в брандмауэр? а так он постоянно удаляет и ставит по новой из за чего инсталятор подтупливает
Beavimo, Директив для деинстоллятора, таких например как для инсталлятора
VersionInfoVersion={#MyAppVersion}
VersionInfoProductVersion={#MyAppVersion}
VersionInfoCompany={#MyAppPublisher}
VersionInfoDescription={#MyAppDisplayName} Setup
VersionInfoProductName={#MyAppDisplayName}
VersionInfoCopyright={#MyAppInfoCopyrightName}
Нет.
Если уж делать то только ручками на редакторах ресурсов.
Ну просто любопытство распирает, для каких надобностей сие художества?
ZVSRus, да дурак я просто вот и все, наверное поговорить охота :tongue:
Beavimo, Вы напрасно ёрничаете — тезис «задача может не нуждаться в выбранном решении»™ никто не отменял.
ёрничаете » я пас
страница ни о чем, как это бесит когда чтото ищешь
вот так выехал на инно вместо батника
[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-х битных системах
есть люди которые знают намного больше »Для базовой настройки: К 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 для удаления ключей во время установки, но не создания их в течение установки.
Nordek
Проверку нужно добавить чтоб ошибку не выводил на "HKLM64,'SOFTWARE...". Вы имеете в виду, проверку на битность системы?
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-ой системы? Зарание Благодарю!
Beavimo, Направление верное. Только вам достаточно проверки для HKLM64. Для HKLM не нужна - Учитывая что работа с HKLM вам будет необходима и в 64-разрядной операционной системе, иначе в 64-разрядной операционной системе HKLM будет пропускаться.
нету в наличии 32-ой системы? »На заметку: Если компьютер позволяет, можно использовать виртуальную машину с Windows для проверки.
P.S. У меня на реальной машине осталась только Windows 7 32-разрядная. Из под Linux в виртуальной машине только Windows 10 обеих разрядностей (32-разрядная и 64-разрядная).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.