Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
Noname22
30-07-2013, 16:01
Для удаления программы достаточно удалить ключ 'Software\Microsoft\Windows\CurrentVersion\Uninstall\Твой_апп_айди'; »Для справки: Это лишь удалит информацию о установленной программе, но не саму программу. Т.е информация что в системе эта программа не установлена будет ложной, на самом деле программа будет всё равно установлена, поскольку могут быть зарегистрированы какие либо элементы, установлены сертификаты/цифровая подпись, внесены разнообразные ключи реестра и т.д. и т.д. и т.п. Удалением программы управляет сам деинсталлятор и то не полностью.
Вот бывает говорят, программа полностью portable, не оставляет ничего после себя в реестре. Не верно, всё равно оставляет запись о том что эта программа запускалась.
mat_y@vk, добавлю к выше сказанному: можно написать функцию, которая будет искать каталог с игрой по заданому заранее ID с результатом на выходе. Если все условия описаные в функции будут соблюдены, выдирать из реестра путь к целевой папке и использовать его в качестве пути установки, соответственно. А результат возвращаемый функцией использовать для пропуска страницы выбора папки установки. Для большей информативности можно добавить MsgBox с сообщением типа " программа успешно обнаружена, ля-ля, тополя...". Если же функция вернет отрицательный результат, то тогда уже предоставлять пользователю возможность самому указать путь к папке.
Noname22
30-07-2013, 16:20
А этот AppId не зависит от установленной винды? »На сколько знаю нет!
У меня еще вопрос... как можно добавить свои кнопки на 1 страницу со ссылкой в сеть... »
[Code]
var
SiteButton: TNewButton;
SiteOpenButton: Integer;
procedure SiteButtonClick(Sender: TObject); forward;
procedure InitializeWizard();
begin
SiteButton := TNewButton.Create(WizardForm);
with SiteButton do
begin
Parent := WizardForm;
Left := ScaleX(16);
Top := ScaleY(327);
Width := ScaleX(75);
Height := ScaleY(25);
Caption := 'Мой сайт';
OnClick := @SiteButtonClick;
end;
end;
procedure SiteButtonClick(Sender: TObject);
begin
ShellExec('open', 'http://www.сайт.com/', '', '', SW_SHOWNORMAL, ewNoWait, SiteOpenButton)
end;
обязательно botva.dll? »Нет!
как можно добавить свои кнопки на 1 страницу со ссылкой в сеть »
*UPD
[Code]
var
urlBtn, addBtn: TButton;
procedure urlOpen(Sender: TObject);
var
i: Integer;
begin
case TButton(Sender).Tag of
0: ShellExec('open', 'http://www.oszone.net/', '', '', 5, ewNoWait, i); //Действие для первой кнопки
1: ShellExec('open', 'http://www.oszone.net/', '', '', 5, ewNoWait, i); //Действие для второй
end;
end;
procedure InitializeWizard();
begin
with WizardForm do
begin
urlBtn := TButton.Create(nil); //Первая кнопка
with urlBtn do
begin
Parent := WizardForm;
SetBounds(ScaleX(12), NextButton.Top, NextButton.Width, NextButton.Height);
Tag := 0;
Caption := 'Веб - сайт';
OnClick := @urlOpen;
end;
addBtn := TButton.Create(nil); //Вторая
with addBtn do
begin
Parent := WizardForm;
SetBounds(urlBtn.Left *8, urlBtn.Top, urlBtn.Width, urlBtn.Height);
Tag := 1;
Caption := 'Имя кнопки';
OnClick := @urlOpen;
end;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
urlBtn.Hide;
addBtn.Hide;
case CurPageID of
wpWelcome:
begin
urlBtn.Show;
addBtn.Show;
end;
end;
end;
Кнопки показывается только на станице приветствия - на остальных скрыты. Насколько я понял, именно это и нужно.
mat_y@vk
30-07-2013, 17:07
Noname22, saurn, а если 2 кнопки, то просто 2 раза это описывать с разными координатами?
а если 2 кнопки, то просто 2 раза это описывать с разными координатами? »
С разными координатами и с разными действиями в обработчике OnClick. Обновленный пример постом выше.
Noname22
30-07-2013, 20:06
а если 2 кнопки »
[Code]
var
SiteButton1, SiteButton2: TNewButton;
SiteOpenButton1, SiteOpenButton2: Integer;
procedure SiteButton1Click(Sender: TObject); forward;
procedure SiteButton2Click(Sender: TObject); forward;
procedure InitializeWizard();
begin
SiteButton1 := TNewButton.Create(WizardForm);
SiteButton1.Parent := WizardForm;
SiteButton1.Left := ScaleX(8);
SiteButton1.Top := ScaleY(327);
SiteButton1.Width := ScaleX(75);
SiteButton1.Height := ScaleY(25);
SiteButton1.Caption := 'Мой сайт 1';
SiteButton1.OnClick := @SiteButton1Click;
SiteButton2 := TNewButton.Create(WizardForm);
SiteButton2.Parent := WizardForm;
SiteButton2.Left := ScaleX(88);
SiteButton2.Top := ScaleY(327);
SiteButton2.Width := ScaleX(75);
SiteButton2.Height := ScaleY(25);
SiteButton2.Caption := 'Мой сайт 2';
SiteButton2.OnClick := @SiteButton2Click;
end;
procedure SiteButton1Click(Sender: TObject);
begin
ShellExec('open', 'http://www.мойсайт1.com/', '', '', SW_SHOWNORMAL, ewNoWait, SiteOpenButton1)
end;
procedure SiteButton2Click(Sender: TObject);
begin
ShellExec('open', 'http://www.мойсайт2.com/', '', '', SW_SHOWNORMAL, ewNoWait, SiteOpenButton2)
end;
У меня просто тут засада какая-то... ни один фаил справки не открывается... точнее открывается, а текста нет... »
Правой кнопкой на файл справки => разблокировать => применить.
mat_y@vk
31-07-2013, 09:56
Правой кнопкой на файл справки => разблокировать => применить. »
Век живи - век учись! Работает!
а как сделать чтоб внизу самого обычного инсталятора была ссылка на сайт? чтоб на неё нажать можно было
Noname22
01-08-2013, 02:00
а как сделать чтоб внизу самого обычного инсталятора была ссылка на сайт? »
[Code]
var
OpenURL: TNewStaticText;
ErrorOpenURL: Integer;
procedure OpenURLClick(Sender: TObject); forward;
procedure InitializeWizard();
begin
OpenURL := TNewStaticText.Create(WizardForm);
OpenURL.Parent := WizardForm;
OpenURL.Cursor := crHand;
OpenURL.Caption := 'Мой сайт';
OpenURL.OnClick := @OpenURLClick;
OpenURL.Left := ScaleX(16);
OpenURL.Top := ScaleY(336);
OpenURL.Width := ScaleX(60);
OpenURL.Height := ScaleY(14);
OpenURL.Font.Color := clBlue;
OpenURL.Font.Style := OpenURL.Font.Style + [fsUnderline];
end;
procedure OpenURLClick(Sender: TObject);
begin
ShellExec('open', 'http://www.мойсайт.com/', '', '', SW_SHOWNORMAL, ewNoWait, ErrorOpenURL);
end;
Всем лапа. Почитал. Зделал через визуальный редактор вот это [ISFormDesigner]
WizardForm=FF0A005457495A415244464F524D0030102A03000054504630F10B5457697A617264466F726D0A57697A61726 4466F726D0C436C69656E744865696768740368010B436C69656E74576964746803F1010C4578706C696369744C656674020 00B4578706C69636974546F7002000D4578706C69636974576964746803F9010E4578706C69636974486569676874038A010 D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724 E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D6550616765084E65787450616765070D4 953437573746F6D50616765310D4578706C69636974576964746803F1010E4578706C696369744865696768740339010000F 110544E65774E6F7465626F6F6B5061676509496E6E6572506167650D4578706C69636974576964746803F1010E4578706C6 963697448656967687403390100F10C544E65774E6F7465626F6F6B0D496E6E65724E6F7465626F6F6B00F110544E65774E6 F7465626F6F6B506167650B4C6963656E7365506167650C50726576696F757350616765070D4953437573746F6D506167653 10D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED00000010544E65774E6F7465626F6F6 B506167650D4953437573746F6D50616765310743617074696F6E06154953437573746F6D50616765315F43617074696F6E0 B4465736372697074696F6E06194953437573746F6D50616765315F4465736372697074696F6E0C50726576696F757350616 765070B57656C636F6D6550616765084E65787450616765070B4C6963656E736550616765000E544E6577537461746963546 578740E4E65775374617469635465787431044C656674021003546F700210055769647468024D06486569676874020E07436 17074696F6E060E4E65775374617469635465787431085461624F72646572020000000E544E6577537461746963546578740 E4E65775374617469635465787432044C656674021003546F700210055769647468024D06486569676874020E07436170746 96F6E060E4E65775374617469635465787432085461624F72646572020100000000000000
[Code]
{ RedesignWizardFormBegin } // Не удаляйте эту строку!
// Не изменяйте эту секцию. Она создана автоматически.
var
ISCustomPage1: TWizardPage;
NewStaticText1: TNewStaticText;
NewStaticText2: TNewStaticText;
procedure RedesignWizardForm;
begin
{ Creates custom wizard page }
ISCustomPage1 := CreateCustomPage(wpWelcome, 'ISCustomPage1_Caption', 'ISCustomPage1_Description');
{ NewStaticText1 }
NewStaticText1 := TNewStaticText.Create(WizardForm);
with NewStaticText1 do
begin
Parent := ISCustomPage1.Surface;
Caption := 'NewStaticText1';
Left := ScaleX(16);
Top := ScaleY(16);
Width := ScaleX(77);
Height := ScaleY(14);
end;
{ NewStaticText2 }
NewStaticText2 := TNewStaticText.Create(WizardForm);
with NewStaticText2 do
begin
Parent := ISCustomPage1.Surface;
Caption := 'NewStaticText2';
Left := ScaleX(16);
Top := ScaleY(16);
Width := ScaleX(77);
Height := ScaleY(14);
end;
NewStaticText1.TabOrder := 0;
NewStaticText2.TabOrder := 1;
{ ReservationBegin }
// В этом месте вы можете добавить свой код.
{ ReservationEnd }
end;
// Не изменяйте эту секцию. Она создана автоматически.
{ RedesignWizardFormEnd } // Не удаляйте эту строку!
procedure InitializeWizard();
begin
RedesignWizardForm;
end;
незнаю что делать дальше
мне нужно чтоб при нахождении [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\7-Zip]
"DisplayName"="7-Zip 22"
высвечивалась Caption := 'NewStaticText1' а 'NewStaticText2' скрылся
если "DisplayName"="7-Zip 22" нету высвечивалась Caption := 'NewStaticText2' и скрывался 'NewStaticText1'
как зделать помогите
El Dog, ваш код спрячьте под спойлер.
высвечивалась Caption := 'NewStaticText1' а 'NewStaticText2' скрылся »
В этом случае не обязательно манипулировать с контролами, можно просто изменять Caption в зависимости от значения в реестре.
[Code]
var
ISCustomPage1: TWizardPage;
NewStaticText1: TNewStaticText;
procedure RedesignWizardForm();
begin
ISCustomPage1 := CreateCustomPage(wpWelcome, 'ISCustomPage1_Caption', 'ISCustomPage1_Description');
NewStaticText1 := TNewStaticText.Create(WizardForm);
with NewStaticText1 do
begin
Parent := ISCustomPage1.Surface;
Caption := 'NewStaticText1';
Left := ScaleX(16);
Top := ScaleY(16);
Width := ScaleX(77);
Height := ScaleY(14);
end;
end;
procedure InitializeWizard();
begin
RedesignWizardForm();
end;
function CompareRegValue(const Value: String): Boolean;
var
sResult: String;
begin
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\7-Zip', Value, sResult);
if (sResult = '7-Zip 22') then NewStaticText1.Caption := 'Имя 7-Zip 22 найдено' else NewStaticText1.Caption := 'Имя 7-Zip 22 не найдено';
end;
procedure CurPageChanged(CurPageID: Integer);
begin
case PageFromID(CurPageID) of
ISCustomPage1: CompareRegValue('DisplayName');
end;
end;
Длинные тексты помещайте под спойлер: ваш текст
Dark_Delphin
02-08-2013, 17:00
Всем привет.
Подскажите как суда написать просто свой текст:
DefaultDirName=Бла-бла-бла
saurn спасиба. можно зделать штоб имя 7-Zip 22 найдено было синим имя 7-Zip 22 не найдено было красным?
>>Длинные тексты помещайте под спойлер: ваш текст>> в скрипте помещать?
R.i.m.s.k.y.
03-08-2013, 09:17
Dark_Delphin, эээ в 'апострофы' не получается?
El Dog,
function CompareRegValue(const Value: String): Boolean;
var
sResult: String;
begin
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\7-Zip', Value, sResult);
if (sResult = '7-Zip 22') then begin
NewStaticText1.Caption := 'Имя 7-Zip 22 найдено'
NewStaticText1.Font.Color := clBlue;
end
else begin
NewStaticText1.Caption := 'Имя 7-Zip 22 не найдено';
NewStaticText1.Font.Color := clRed;
end;
end;
Dark_Delphin
03-08-2013, 14:06
R.i.m.s.k.y., нет. Я пробовал уже.
Тогда в ТЕдите пишет это:
C:\Users\Dark_Delphin\Desktop\Out\'Текст который я напсиал'
Johny777
03-08-2013, 14:37
Dark_Delphin, procedure InitializeWizard();
begin
WizardForm.DirEdit.Text := 'Текст который я напсиал';
end;
Будь добр прочитать про методы и свойства классов с которыми работаешь! :(
Dark_Delphin
03-08-2013, 14:52
Johny777, ага так тоже пробовал, но я упустил один нюанс... Не внимательный я.
Спасибо.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.