Как показывать и предлагать задачу в зависимости от Windows?

Александр85

Новичок
Здравствуйте!
Как показывать и предлагать задачу в зависимости от Windows, но без конкретной билда?
У меня есть 3 файла и 3 задачи: для 7-ки, 10-ки и 11-й. Нужно чтобы ВНЕ зависимости от билда, SP1 и т.п. для каждой Windows была предложена (отображалась) только одна задача, запускалась и копировалась соответственно тоже.
Если использовать например: OnlyBelowVersion: 6.1.7600, то задача будет видна только на Windows 7, без SP1
Если использовать, например: OnlyBelowVersion: 10.0.10240, то задача будет видна только на конкретном билде Windows 10, а их много и мне нужны все!
Если использовать MinVersion: 6.1.7600, то задача будет видна на всех ОС начиная с 7-ки.
Я запутался! (( Как сделать-то правильно, чтобы на 7-ке была видна одна задача - на всех билдах, но не была видна на 10-ке, а на 10-ке была доступна другая задача на ВСЕХ билдах и т.п., но не видна на 7-ке и 11-й?
P.S. Также можно ли отдельно сделать привязку к конкретной редакции, т.е. например для Home - одно, для Pro - другое т .п.?
 

Crachlow

Старожил
Здравствуйте!
Как показывать и предлагать задачу в зависимости от Windows, но без конкретной билда?
У меня есть 3 файла и 3 задачи: для 7-ки, 10-ки и 11-й. Нужно чтобы ВНЕ зависимости от билда, SP1 и т.п. для каждой Windows была предложена (отображалась) только одна задача, запускалась и копировалась соответственно тоже.
Если использовать например: OnlyBelowVersion: 6.1.7600, то задача будет видна только на Windows 7, без SP1
Если использовать, например: OnlyBelowVersion: 10.0.10240, то задача будет видна только на конкретном билде Windows 10, а их много и мне нужны все!
Если использовать MinVersion: 6.1.7600, то задача будет видна на всех ОС начиная с 7-ки.
Я запутался! (( Как сделать-то правильно, чтобы на 7-ке была видна одна задача - на всех билдах, но не была видна на 10-ке, а на 10-ке была доступна другая задача на ВСЕХ билдах и т.п., но не видна на 7-ке и 11-й?
P.S. Также можно ли отдельно сделать привязку к конкретной редакции, т.е. например для Home - одно, для Pro - другое т .п.?
Тебе @LexBell показывал пример как сделать недоступным элемент из списка задач. Его пример с добавлением
Код:
[_Code]
function Win7: boolean;
var
  ver: TWindowsVersion;
begin
  GetWindowsVersionEx(ver);
  if ((ver.Major = 6) and (ver.Minor >= 0)) then result:=true  //with Vista
    else result:=false;
end;

function Win10: boolean;
var
  ver: TWindowsVersion;
begin
  GetWindowsVersionEx(ver);
  if ((ver.Major = 10) and (ver.Minor >= 0) and (ver.build <22000) )    then result:=true
    else result:=false;
end;

function Win11: boolean;
var
  ver: TWindowsVersion;
begin
  GetWindowsVersionEx(ver);
  if ((ver.Major = 10) and (ver.Minor >= 0) and (ver.build >=22000)) then result:=true
    else result:=false;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectTasks then begin
  WizardForm.TasksList.ItemEnabled[3] := Win11;
  WizardForm.TasksList.ItemEnabled[4] := Win10;
  WizardForm.TasksList.ItemEnabled[6] := Win7;
end;
end;
 
Последнее редактирование:

Александр85

Новичок
Что так всё сложно-то? Почему нельзя для конкретной Винды одно, для другой иное отображать? И я же ниже написал там более сложные проблемы, как ещё и В ЗАВИСИМОСТИ от Редакции, привязать, вот проблемы ведь начнутся? ((
 

Crachlow

Старожил
Что так всё сложно-то? Почему нельзя для конкретной Винды одно, для другой иное отображать? И я же ниже написал там более сложные проблемы, как ещё и В ЗАВИСИМОСТИ от Редакции, привязать, вот проблемы ведь начнутся? ((
@Александр85, для windows 7, ты бы еще задал задачу отсортировать по retail и vol :help:
 

Crachlow

Старожил
Что так всё сложно-то? Почему нельзя для конкретной Винды одно, для другой иное отображать? И я же ниже написал там более сложные проблемы, как ещё и В ЗАВИСИМОСТИ от Редакции, привязать, вот проблемы ведь начнутся? ((
Почему нельзя для конкретной Винды одно, для другой иное отображать?
убери CurPageChanged добавь проверку для заданий Name: associate; Description: "&Associate files"; GroupDescription: "Other tasks:"; Check: Win7;
 

Crachlow

Старожил
Здравствуйте!
Как показывать и предлагать задачу в зависимости от Windows, но без конкретной билда?
У меня есть 3 файла и 3 задачи: для 7-ки, 10-ки и 11-й. Нужно чтобы ВНЕ зависимости от билда, SP1 и т.п. для каждой Windows была предложена (отображалась) только одна задача, запускалась и копировалась соответственно тоже.
Если использовать например: OnlyBelowVersion: 6.1.7600, то задача будет видна только на Windows 7, без SP1
Если использовать, например: OnlyBelowVersion: 10.0.10240, то задача будет видна только на конкретном билде Windows 10, а их много и мне нужны все!
Если использовать MinVersion: 6.1.7600, то задача будет видна на всех ОС начиная с 7-ки.
Я запутался! (( Как сделать-то правильно, чтобы на 7-ке была видна одна задача - на всех билдах, но не была видна на 10-ке, а на 10-ке была доступна другая задача на ВСЕХ билдах и т.п., но не видна на 7-ке и 11-й?
P.S. Также можно ли отдельно сделать привязку к конкретной редакции, т.е. например для Home - одно, для Pro - другое т .п.?
Также можно ли отдельно сделать привязку к конкретной редакции, т.е. например для Home - одно, для Pro - другое т .п.?
. Ты отказался что ли от этого?
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Tasks]
Name: tweaks11; Description: "Selected Tweaks Win 11"; GroupDescription: "Windows 11"; Check: Win11;
Name: tweaks11\pro; Description: "For Pro"; GroupDescription: "Windows 11"; Flags: exclusive; Check: Win11;
Name: tweaks11\enterp; Description: "For Enterprise"; GroupDescription: "Windows 11"; Flags: unchecked exclusive; Check: Win11;

Name: tweaks10; Description: "Selected Tweaks Win 10"; GroupDescription: "Windows 10"; Check: Win10;
Name: tweaks10\pro; Description: "For Pro"; GroupDescription: "Windows 10"; Flags: exclusive; Check: Win10;
Name: tweaks10\enterp; Description: "For Enterprise"; GroupDescription: "Windows 10"; Flags: unchecked exclusive; Check: Win10;

Name: tweaks7; Description: "Selected Tweaks Win 7"; GroupDescription: "Windows 7"; Check: Win7;
Name: tweaks7\pro; Description: "For Enterprise"; GroupDescription: "Windows 7"; Flags: exclusive; Check: Win7;
Name: tweaks7\enterp; Description: "For Ultimate"; GroupDescription: "Windows 7"; Flags: unchecked exclusive; Check: Win7;

[_Code]
var
MyEdition: array of string;
Text: TNewStaticText;

function Win7: boolean;
var
ver: TWindowsVersion;
begin
GetWindowsVersionEx(ver);
if ((ver.Major = 6) and (ver.Minor >= 0)) then result:=true //with Vista
else result:=false;
end;

function Win10: boolean;
var
ver: TWindowsVersion;
begin
GetWindowsVersionEx(ver);
if ((ver.Major = 10) and (ver.Minor >= 0) and (ver.build <22000)) then result:=true
else result:=false;
end;

function Win11: boolean;
var
ver: TWindowsVersion;
begin
GetWindowsVersionEx(ver);
if ((ver.Major = 10) and (ver.Minor >= 0) and (ver.build >=22000)) then result:=true
else result:=false;
end;

procedure InitializeWizard();
begin

Text:=TNewStaticText.Create(WizardForm)
Text.Left:=15
Text.Top:=330
Text.Width:=150
Text.Height:=38
Text.AutoSize:=False
Text.WordWrap:=True
Text.Caption:=''
Text.Parent:=WizardForm
end;


procedure CurPageChanged(CurPageID: Integer);
var
Str: string;
i: Integer;
begin
MyEdition:=['Home', 'Pro', 'ProEducation', 'Education', 'Enterprise', 'Ultimate'];

if CurPageID = wpSelectTasks then begin

RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows NT\CurrentVersion', 'EditionID', Str);
Text.Caption:='Tweaks for ' + str
for i:=0 to GetArrayLength(MyEdition)-1 do
if Lowercase(str) = Lowercase(MyEdition) then
case Lowercase(str) of

'home': begin
MsgBox(str, mbInformation, mb_Ok) ;
end;
'pro': begin
MsgBox(str, mbInformation, mb_Ok) ;
end;
'proeducation': begin
MsgBox(str, mbInformation, mb_Ok) ;
end;
'education': begin
MsgBox(str, mbInformation, mb_Ok) ;
end;
'enterprise': begin
MsgBox(str, mbInformation, mb_Ok) ;
WizardForm.TasksList.Checked[3]:=True;
WizardForm.TasksList.ItemEnabled[2] := False;
end;
'ultimate': begin
MsgBox(str, mbInformation, mb_Ok) ;
end;
end;
end;
end;

function NextButtonClick(CurPage: Integer): Boolean;
var
s: string;
begin
Result:=True;
If CurPage=9 then
begin
If (Not IsTaskSelected('tweaks11')) and (Not IsTaskSelected('tweaks10')) and (Not IsTaskSelected('tweaks7'))
then
begin
s:=ExpandConstant('No tasks selected');
MsgBox(s, mbError, mb_Ok);
WizardForm.NextButton.Enabled:= False
Result:= False
end;
end;
end;
 
Последнее редактирование:
Сверху