Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 4]
Raf-9600
04-04-2012, 16:43
Johny777, Это не подойдет. Но все равно спасибо за помощь :)
El Sanchez
04-04-2012, 20:50
вроде полностью будет так:
читать дальше »
а чему равны?
GWL_EXSTYLE = ?;
WS_EX_COMPOSITED = ?; »
Johny777, ну, почти угадал.
const
GWL_EXSTYLE = (-20)
WS_EX_COMPOSITED = $2000000
Devils Night
04-04-2012, 23:09
Как добавить ключ реестра?
Не каким образом не добавляет, по разному пробовал:
[Registry]
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{D1514D66-7796-4DAB-BF64-9B54924EA9F7}_is1; ValueType: dword; ValueName: IsAppInstalled; ValueData: $00000001
[Registry]
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{#AppID}_is1; ValueType: dword; ValueName: IsAppInstalled; ValueData: $00000001
[Registry]
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{#AppID}; ValueType: dword; ValueName: IsAppInstalled; ValueData: $00000001
.
R.i.m.s.k.y.
04-04-2012, 23:53
Devils Night, в секцию Uninstall реестра во время установки доступа нет, туда можно сунуться во время InitializeSetup или после [Run]
Devils Night
05-04-2012, 15:57
в секцию Uninstall реестра во время установки доступа нет, туда можно сунуться во время InitializeSetup или после [Run] »Понял, значит придётся использовать секцию RUN.
Ребят, подскажите такую вещь, как по средствам INNO По VID & PID сделать так чтобы определялось устройство и высвечивалось в инсталяторе?
Ivan_009
05-04-2012, 16:04
Как у новой bass.dll v2.4.8 создать кнопку вкл выкл музыки... :help:
R.i.m.s.k.y.
05-04-2012, 16:06
Devils Night, если мне нужны названия и пиды/виды - я из реестра дергаю, в шапке есть ultimate Black Skin, он выдергивает названия, ис тех же ключей реестра можно дернуть и пиды
в общем за основу возьми из шапки скрипт "проверку системных требований"
вот так я дергаю для видюшки пид/вид, на выходе список видюшек с пидами/видами, каждая видюшка на новой строчке
function GetAllVideoCard():String; // HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}
var
Keys : TArrayOfString;
key, DriverDesc, MatchingDeviceId : string;
i : integer;
begin
Result := '';
key := 'SYSTEM\CurrentControlSet\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}'; RegGetSubkeyNames(HKLM, key, Keys)
for i := 0 to GetArrayLength(Keys)-1 do begin
RegQueryStringValue(HKLM, key + '\' + Keys[i], 'DriverDesc', DriverDesc);
RegQueryStringValue(HKLM, key + '\' + Keys[i], 'MatchingDeviceId', MatchingDeviceId); StringChangeEx(MatchingDeviceId, 'pci\', '', True);
if (Pos(LowerCase(DriverDesc), LowerCase(Result)) = 0) then Result := Result + #13#10 + DriverDesc + ' (' + MatchingDeviceId + ')';
end;
end;
заодно GUID устройств http://msdn.microsoft.com/en-us/library/windows/hardware/ff553426(v=vs.85).aspx
Johny777
05-04-2012, 16:28
подскажите пожалуйста
как убрать кнопку системного меню в середине?
http://img254.imageshack.us/img254/3651/88859877.jpg (http://imageshack.us/photo/my-images/254/88859877.jpg/)
(правый фрвгмент скрина из готового инсталла на основе Inno, а не фотошоп)
за эти кнопки отвечает
WizardForm.BorderIcons := [biSystemMenu];
вот так не убирается
Procedure InitializeWizard();
begin
WizardForm.BorderIcons :=WizardForm.BorderIcons - [biMaximize];
end;
:(
Devils Night
05-04-2012, 16:58
если мне нужны названия и пиды/виды - я из реестра дергаю »Да вот рыскаю реестр, ищу.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} »Ага, спасибо большое.
А вот когда устройство есть но не установлены драйвера, оно определяется в Class\{4D36E968-E325-11CE-BFC1-08002BE10318} или HARDWARE?
в шапке есть ultimate Black Skin »
Я можно сказать весь этот код закоментировал, и в итоге он вообще перестал работать, хотел чтоб осталось одно устройство, например:
Видеоадаптер: NVIDIA GeForce 8600, но без оформления рамками, в общем не получается. Если можно кодик одного устройства (без всяких там виндовсов, файлов подкачек), пожалуста?!
function GetAllVideoCard():String; // HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}
var
Keys : TArrayOfString;
key, DriverDesc, MatchingDeviceId : string;
i : integer;
begin
Result := '';
key := 'SYSTEM\CurrentControlSet\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}'; RegGetSubkeyNames(HKLM, key, Keys)
for i := 0 to GetArrayLength(Keys)-1 do begin
RegQueryStringValue(HKLM, key + '\' + Keys[i], 'DriverDesc', DriverDesc);
RegQueryStringValue(HKLM, key + '\' + Keys[i], 'MatchingDeviceId', MatchingDeviceId); StringChangeEx(MatchingDeviceId, 'pci\', '', True);
if (Pos(LowerCase(DriverDesc), LowerCase(Result)) = 0) then Result := Result + #13#10 + DriverDesc + ' (' + MatchingDeviceId + ')';
end;
end;»
Ну вот вставил:
[Code ]
function GetAllVideoCard():String; // HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}
var
Keys : TArrayOfString;
key, DriverDesc, MatchingDeviceId : string;
i : integer;
begin
Result := '';
key := 'SYSTEM\CurrentControlSet\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}'; RegGetSubkeyNames(HKLM, key, Keys)
for i := 0 to GetArrayLength(Keys)-1 do begin
RegQueryStringValue(HKLM, key + '\' + Keys[i], 'DriverDesc', DriverDesc);
RegQueryStringValue(HKLM, key + '\' + Keys[i], 'MatchingDeviceId', MatchingDeviceId); StringChangeEx(MatchingDeviceId, 'pci\', '', True);
if (Pos(LowerCase(DriverDesc), LowerCase(Result)) = 0) then Result := Result + #13#10 + DriverDesc + ' (' + MatchingDeviceId + ')';
end;
end;
А как сделать чтоб оно в инсаляторе где нибудь внизу выдало например Видеоадаптер: Такой то, такой то. Естественно без оформления и рамок.
Raf-9600
05-04-2012, 17:57
В Inno Setup от Restools есть замечательная возможность сворачивать компоненты (ComponentsListTVStyle=true), а возможно ли сделать так, чтобы при выборе какого-то компонента, сворачивалась определённое древо компонентов?
Допустим у меня есть:
[Components]
Name: "Game1"; Description: Игра 1;
Name: "Game1\One"; Description: Пункт 1;
Name: "Game1\Two"; Description: Пункт 2;
Name: "Game2"; Description: Игра 2;
Name: "Game2\One"; Description: Пункт 1;
Name: "Game2\Two"; Description: Пункт 2;
Нужно чтобы при выборе Game2 сворачивалось древо компонентов Game1, и наоборот. Такое реально?
Devils Night
05-04-2012, 18:19
Raf-9600, не оно (http://krinkels.ru/showthread.php?p=2656#post2656) ?
Как сделать выборочный компонент, чтобы при галочке: после установки прописывался реестр (reg-файл), при не галочке: после установки не прописывался реестр (reg-файл)?
Raf-9600
05-04-2012, 18:38
не оно ? »
Если не сложно, можете показать пример, в котором допустим выбрав компонент Game1, сворачивалось бы древо Game2? :pray:
Johny777
05-04-2012, 18:43
Raf-9600,
нафига?
а если у него дочерние как у тебя в примере?
смотри
я выбираю основной - игру. И тут дерево дочерних сворачивается. Т.е. рабиокнопки с выбором озвучек, чекбоксы к ним ещё дочерние
Тебе разве такое нужно?
R.i.m.s.k.y.
05-04-2012, 18:44
Да вот рыскаю реестр, ищу. »
я ж тебе гуиды девайсов выше показал, дергай гуиды и смотри в ключе HKLM\SYSTEM\CurrentControlSet\Control\Class\ГУИД
А как сделать чтоб оно в инсаляторе где нибудь внизу выдало например Видеоадаптер: Такой то, такой то. Естественно без оформления и рамок. »
в расширенной версии через редактор форм
alert30, вот ты сейчас одним предложением описал [Components] и как он работает, его и используй
Devils Night
05-04-2012, 18:45
Если не сложно, можете показать пример, »
Ну наверно так:
[Setup]
AppName=1
AppVersion=1
AppVerName=1
DefaultDirName={pf}\1
DefaultGroupName=1
AllowNoIcons=yes
OutputDir=.
OutputBaseFilename=setup
SolidCompression=true
Compression=lzma/ultra64
InternalCompressLevel=ultra64
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Components]
Name: Fav; Description: 1; Types: full; Flags: collapsed
Name: Fav\1; Description: 1; Types: custom; Flags: exclusive
Name: Fav\2; Description: 2; Types: custom; Flags: exclusive
Name: Fav\3; Description: 2; Types: custom; Flags: exclusive collapsed
Name: Fav\3\1; Description: 1; Types: custom
Name: Fav\3\2; Description: 2
[Code ]
procedure InitializeWizard();
begin
//-------------------- Скрыть компонент - Начало --------------------\\
WizardForm.ComponentsList.TreeViewStyle := True;
//-------------------- Скрыть компонент - Конец --------------------\\
end;
Johny777
05-04-2012, 18:52
alert30,
как и со всем остальным
[Components]
Name: B; Description: описание к B;
[Registry]
Root: HKLM; Subkey: "SOFTWARE\Bethesda Softworks"; ValueType: String; Flags: uninsdeletevalue uninsdeletekeyifempty; Componets: B
Johny777, это точно работает, просто я хочу, которую выше написал:
а) галочку поставишь в компоненте - установка + пропись реестр
б) не поставишь галочку в компоненте - установка
?
Извените, все заработало.
Johny777
05-04-2012, 19:00
alert30,
файлы не помеченые компонентом ставятся всегда
а галка компонента пусть будет только для реестра (как у меня в примере)
Извените, все заработало. »
вообще вот пример как повесть два действия на один чекбокс (кастомный!)
и опять же можно менять его название, описывающее то или иное действие будучи отмеченным или неотмеченным
procedure off(Sender: TObject);
begin
/// если чекбокс не отмечен
If off_checkbox.Checked = false
then
begin
здесь вносим одну запись в реестр
off_checkbox.Caption := 'Я не отмечен и занесу этот ключ в реестр';
end
else /// в противном случае (отмечен)
begin
вносим другую запись
off_checkbox.Caption := 'Спасибо, что отметил. Теперь занесу другой';
end;
end;
Raf-9600
05-04-2012, 19:07
нафига?
а если у него дочерние как у тебя в примере?
смотри
я выбираю основной - игру. И тут дерево дочерних сворачивается. Т.е. рабиокнопки с выбором озвучек, чекбоксы к ним ещё дочерние »
Дочерние я таким образом скрывать не планирую. У меня инсталлятор на две игры, при том выбрать сразу обе невозможно, и мне кажется, что было бы удобно, чтобы, когда пользователь выбрал одну из игр, все древо компонентов относящихся к другой, сворачивалось.
Ну наверно так: »
Мне бы с зависимостью от конкретного компонента... И чтобы сворачивалось не все, а только одно, определённое древо.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.