Inno setup определить версию windows

Inno setup определить версию windows

13326 просмотра

3 ответа

Я использую Inno Setup для изменения корзины в ОС. Мне нужно сделать некоторые случаи, если пользователь работает под управлением Windows 7 или Windows XP. Я пытаюсь использовать:

Но похоже, что он не может найти imageres.dll или shell32.dll даже хотя я проверял, что они существуют. Что я делаю неправильно? Или я могу проверить версию Windows по-другому?

Источник Размещён: 17.05.2019 03:28

Ответы (3)

7 плюса

Вы должны использовать эту GetWindowsVersionEx функцию. Он заполняет TWindowsVersion запись:

Существует множество других связанных функций. См. Ниже «Системные функции» на этой странице .

6 плюса

Согласно документации , параметры, связанные с каждым файлом, могут быть напрямую привязаны к версии ОС:

«0» означает никогда не устанавливать; «1» означает установку на любую версию (то есть версию 1.0 или новее).

Примечание. Вышеупомянутый метод не ограничивается секцией [Files]; MinVersion и OnlyBelowVersion могут использоваться в большинстве разделов.

Автор: wallyk Размещён: 01.05.2011 06:44

5 плюса

В большинстве разделов программы установки Inno (как [Files] , [Tasks] , [Run] и т.д.) , вы можете использовать MinVersion и OnlyBelowVersion общие параметры .

В сценарии Pascal используйте эту GetWindowsVersionEx функцию, чтобы найти номер версии Windows. Затем сравните номер с определенным номером версии Windows .

Вот несколько удобных функций для проверки конкретных версий Windows:

Чтобы проверить серверные выпуски Windows, см.:
Проверка на наличие Windows Server 2003

Inno setup определить версию windows

Сообщения: 222
Благодарности: 19

Конфигурация компьютера
Материнская плата: Asus P5B Deluxe
HDD: Toshiba HDTS212EZSTA, Seagate 500Gb
Звук: Creative Audigy SE
CD/DVD: SAMSUNG SH-224BB
ОС: Windows 8.1 x64, Windows 10 x64

С первой проблемой разобрался путём замены дистрибутива .Net с версии 4.0 на 3.5, которая, в отличие от 4.0, сама проверяет наличие установленной в системе версии .Net Framework и не устанавливает повторно то, что уже есть. Serega, приведённый код на Seven работает некорректно, в указанной ветке реестра на чистой системе есть только v2.0, хотя в системе установлена v3.5.

По второму вопросу полноценный прогрессбар сделать не получится, поэтому придётся довольствоваться фейковым, как при установке IE. Где найти код для него и как «прикрутить» его к секции Run? У меня сейчас уже задействован код для отображения процентов при распаковке всех файлов моего дистрибутива, поэтому нужно соединить обе части кода, первую привожу:

Читайте также:  Kyocera ecosys m2040dn windows 10 не видит сканер
Конфигурация компьютера
Материнская плата: Asus Prime X370-A
HDD: Apacer AS2280P4 480gb + GoodRAM Iridium PRO 512Gb
Звук: Creative SB X-Fi Gamer
CD/DVD: —
Ноутбук/нетбук: Prestigio 141C02 Kubuntu + LiteOn MU3 120gb
Индекс производительности Windows: 7.8

——-
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!

Это сообщение посчитали полезным следующие участники:

Конфигурация компьютера
Материнская плата: GigaByte GA-P35-DS3R
HDD: Seagate 500 Гб
Блок питания: HIPER HPU-4M580 580W ATX2.2
Монитор: 24» Acer P243w HDMI
Прочее: Borland Delphi 7.0 Enterprise
Serega, приведённый код на Seven работает некорректно »

——-
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы. Авраам Линкольн.

Это сообщение посчитали полезным следующие участники:

а за ней вторая:

InnoSetupVersion=5.4.0 (a),ISPP=5.3.9 (a) (build 101211)

[Setup]
AppId=<<2E115B70-E98C-463E-908A-E73C9CBFF816>
AppName=LikeRusXP Localization
AppVersion=6.01.12
AppVerName=
AppPublisher=Radialix, Inc.
AppPublisherURL=http://likerusxp.ru/
AppSupportURL=http://likerusxp.ru/
AppUpdatesURL=http://likerusxp.ru/
DefaultDirName=\LikeRusXP Localization
DefaultGroupName=LikeRusXP Localization
AllowNoIcons=yes
LicenseFile=embedded\License.rtf
InfoBeforeFile=embedded\InfoBefore.rtf
OutputBaseFilename=Setup_LRXP_6.01.12
SetupIconFile=\MAINICON.ico
UninstallDisplayIcon=\Uninstall.ico
CreateUninstallRegKey=yes
Compression=lzma
WizardImageFile=embedded\WizardImage.bmp
WizardSmallImageFile=embedded\WizardSmallImage.bmp

[Files]
Source: «\bass.dll»; DestDir: ««; Flags: deleteafterinstall dontcopy
Source: «\sound.mp3″; DestDir: ««; Flags: deleteafterinstall dontcopy
Source: «\ISSkin.dll»; DestDir: ««; Flags: dontcopy
Source: «\Codejock.cjstyles»; DestDir: ««; Flags: dontcopy
Source: «\Splash.png»; DestDir: ««; Flags: deleteafterinstall ignoreversion dontcopy
Source: «\isgsg.dll»; DestDir: ««; Flags: deleteafterinstall ignoreversion dontcopy
Source: «\*»; DestDir: ««; Components: program
Source: «\LikeRusXP.exe»; DestDir: ««; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: «\limage.exe»; DestDir: ««; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: «\Doc\LikeRusXP.chm»; DestDir: «\Doc»; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: «\Doc\likerusxp-overview.chm»; DestDir: «\Doc»; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: «\License.txt»; DestDir: ««; MinVersion: 4.1.2222,5.0;
Source: «\Store\elibrary.dll»; DestDir: «\Store»; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: «\Store\lresdumper.dll»; DestDir: «\Store»; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: «\Store\sl3core.dll»; DestDir: «\Store»; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: «\Store\lires.exe»; DestDir: «\Store»; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: «\Store\rb\lresdumper.dll»; DestDir: «\Store\rb»; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: «\Store\rb\ResBinder.exe»; DestDir: «\Store\rb»; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: «\Store\rb\readme.txt»; DestDir: «\Store\rb»; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: «\Store\rb\english.uil»; DestDir: «\Store\rb»; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: «\Store\rb\russian.uil»; DestDir: «\Store\rb»; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: «\Glossary\russian.lg3″; DestDir: «\Glossary»; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: «Icons\MAINICON.ico»; DestDir: \Icons; Attribs: System Hidden;
Source: «Icons\Uninstall.ico»; DestDir: \Icons; Attribs: System Hidden;
Source: «Icons\ProgFilesIcon.ico»; DestDir: \Icons; Attribs: System Hidden;
Source: «\desktop.ini»; DestDir: ; Attribs: System Hidden;
Source: «\desktop.ini»; DestDir: ; Attribs: System Hidden;
;Source: «Components\*»; DestDir: ««; Components: Additions

[Types]
Name: «full»; Description: «Полная»
Name: «custom»; Description: «Выборочная»; Flags: iscustom

[Components]
Name: «program»; Description: «Program Files»; Types: full custom; Flags: fixed
Name: «Additions»; Description: «Словари»; Types: full

[Run]
Filename: «\LikeRusXP.exe»; Description: ««; Flags: nowait postinstall skipifsilent; MinVersion: 4.1.2222,5.0;

[Icons]
Name: «\LikeRusXP 6.01.12″; Filename: «\LikeRusXP.exe»; MinVersion: 4.1.2222,5.0;
Name: «\«; Filename: «http://likerusxp.ru/»; MinVersion: 4.1.2222,5.0;
Name: «\«; Filename: ««; MinVersion: 4.1.2222,5.0;
Name: «\Обзор LikeRusXP»; Filename: «\Doc\likerusxp-overview.chm»; MinVersion: 4.1.2222,5.0;
Name: «\LikeRusXP Localization»; Filename: «\LikeRusXP.exe»; Tasks: «desktopicon»; MinVersion: 4.1.2222,5.0;
Name: «\Microsoft\Internet Explorer\Quick Launch\LikeRusXP»; Filename: «\LikeRusXP.exe»; Tasks: «quicklaunchicon»; MinVersion: 4.1.2222,5.0;

[Tasks]
Name: «desktopicon»; Description: ««; GroupDescription: ««; MinVersion: 4.1.2222,5.0;
Name: «quicklaunchicon»; Description: ««; GroupDescription: ««; MinVersion: 4.1.2222,5.0;

[CustomMessages]
russian.NameAndVersion=%1, версия %2
russian.AdditionalIcons=Дополнительные значки:
russian.CreateDesktopIcon=Создать значок на &Рабочем столе
russian.CreateQuickLaunchIcon=Создать значок в &Панели быстрого запуска
russian.ProgramOnTheWeb=Сайт %1 в Интернете
russian.UninstallProgram=Деинсталлировать %1
russian.LaunchProgram=Запустить %1
russian.AssocFileExtension=Св&язать %1 с файлами, имеющими расширение %2
russian.AssocingFileExtension=Связывание %1 с файлами %2.

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Messages]
BeveledLabel=RePack by Gu® 2010

[Code_]
< RedesignWizardFormBegin >// Не удалять эту строку!
// Не изменять эту секцию. Она создана автоматически.
procedure RedesignWizardForm;
begin
with WizardForm.BeveledLabel do
begin
Color := cl3DLight;
Font.Height := -13;
ParentColor := False;
ParentFont := False;
Left := ScaleX(10);
Height := ScaleY(17);
end;

< ReservationBegin >
// Вы можете добавить ваш код здесь.

< ReservationEnd >
end;
// Не изменять эту секцию. Она создана автоматически.
< RedesignWizardFormEnd >// Не удалять эту строку!

#ifdef UNICODE
#define PStr «AnsiString»
#else
#define PStr «String»
#endif

procedure LoadSkin(lpszPath: <#PStr>; lpszIniFileName: <#PStr>);
external ‘LoadSkin@files:isskin.dll stdcall delayload setuponly’;
procedure LoadSkinUninst(lpszPath: <#PStr>; lpszIniFileName: <#PStr>);
external ‘LoadSkin@\isskin.dll stdcall delayload uninstallonly’;
procedure UnloadSkin();
external ‘UnloadSkin@files:isskin.dll stdcall delayload setuponly’;
procedure UnloadSkinUninst();
external ‘UnloadSkin@\isskin.dll stdcall delayload uninstallonly’;
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external ‘ShowWindow@user32.dll stdcall’;

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile(‘Codejock.cjstyles’);
CreateDir(ExpandConstant(‘\ISSkin’));
FileCopy(ExpandConstant(‘\Codejock.cjstyles’), ExpandConstant(‘\ISSkin\Codejock.cjstyles’), True);
LoadSkin(ExpandConstant(‘\ISSkin\Codejock.cjstyles’), ‘NormalBlack.ini’);

Result := True;
end;

function InitializeUninstall(): Boolean;
begin
FileCopy(ExpandConstant(‘\isskin.dll’),
ExpandConstant(‘\isskin.dll’), True);
FileCopy(ExpandConstant(‘\Codejock.cjstyles’),
ExpandConstant(‘\Codejock.cjstyles’), True);

LoadSkinUninst(ExpandConstant(‘\Codejock.cjstyles’), ‘NormalBlack.ini’);
Result := True;
end;

procedure DeinitializeUninstall();
begin
UnloadSkinUninst();
end;

procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external ‘ShowSplashScreen@files:isgsg.dll stdcall delayload’;

const
BASS_SAMPLE_LOOP = 4; //повторение

type
HSTREAM = DWORD; //тип звукового потока

function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean;
external ‘BASS_Init@files:BASS.dll stdcall delayload’;

function BASS_StreamCreateFile(mem: BOOL; f: PChar; offset: DWORD; length: DWORD; flags: DWORD): HSTREAM;
external ‘BASS_StreamCreateFile@files:BASS.dll stdcall delayload’;

function BASS_Start(): Boolean;
external ‘BASS_Start@files:BASS.dll stdcall delayload’;

function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean;
external ‘BASS_ChannelPlay@files:BASS.dll stdcall delayload’;

function BASS_Stop(): Boolean;
external ‘BASS_Stop@files:BASS.dll stdcall delayload’;

function BASS_Free(): Boolean;
external ‘BASS_Free@files:BASS.dll stdcall delayload’;

procedure InitializeWizard();
var Name1: string; i: Integer;
begin
RedesignWizardForm;
////////////////// Spalsh //////////////////////
ExtractTemporaryFile(‘Splash.png’);
ShowSplashScreen(WizardForm.Handle,ExpandConstant(‘‘)+’\Splash.png’,1000,3000,1000,0,255,False, $FFFFFF,10);
///////////////// Splash ///////////////////////
ExtractTemporaryFile(‘bass.dll’);
ExtractTemporaryFile(‘sound.mp3’);
if BASS_Init(-1, 44100, 0, 0, 0) then begin
BASS_Start();
Name1:=ExpandConstant(‘\sound.mp3′);
i:=BASS_StreamCreateFile(FALSE, PChar(Name1), 0, 0, 4);
if i <> 0 then begin
BASS_ChannelPlay(i, True);
end;
end;
end;

procedure DeInitializeSetup();
begin
//////////// ISSkin
ShowWindow(StrToInt(ExpandConstant(‘‘)), 0);
UnloadSkin();
DeleteFile(ExpandConstant(‘\ISSkin\isskin.dll’));
DeleteFile(ExpandConstant(‘\ISSkin\Codejock.cjstyles’));
RemoveDir(ExpandConstant(‘\ISSkin’));
//////////// ISSkin
BASS_Stop(); //нужно для остановки проигрывания
BASS_Free(); //нужно для быстрой выгрузки библиотеки вместе с муз. файлом
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
MsgBox(‘Программа ‘ + ‘<#SetupSetting("AppName")>‘ + ‘ установлена!’, mbInformation, MB_OK);
end;

[ISFormDesigner]
WizardForm=FF0A005457495A415244464F524D003010C301000054504630F10B5457697A617264466F726D0A57697A61726 4466F726D0C436C69656E744865696768740366010B436C69656E74576964746803EF010C4578706C696369744C656674020 00B4578706C69636974546F7002000D4578706C69636974576964746803F7010E4578706C696369744865696768740386010 D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724 E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D65506167650D4578706C6963697457696 4746803F1010E4578706C696369744865696768740339010000F110544E65774E6F7465626F6F6B5061676509496E6E65725 06167650D4578706C69636974576964746803F1010E4578706C69636974486569676874033901000000F10E544E657753746 1746963546578740C426576656C65644C6162656C044C656674020A06486569676874021105436F6C6F720709636C33444C6 96768740B466F6E742E48656967687402F30B506172656E74436F6C6F72080A506172656E74466F6E74080C4578706C69636 9744C656674020A0E4578706C696369744865696768740211000000

Читайте также:  Windows firewall blocking windows update
Оцените статью