Здравствуйте, надумал сделать конвертер рег-файлов в формат .nsi, если конечно это актуально...
В справке описано далеко не всё, поэтому решил задать вопрос в этой теме.
Как занести этот рег-файл в реестр:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\My Program]
[HKEY_LOCAL_MACHINE\SOFTWARE\My Program\System]
; REG_BINARY
"Component Information"=hex:00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
; REG_NONE
"WMVFile"=hex(0):
; REG_EXPAND_SZ
"Command"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,72,\
00,75,00,6e,00,64,00,6c,00,6c,00,33,00,32,00,2e,00,65,00,78,00,65,00,20,00,\
25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,\
00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,79,00,6e,00,\
63,00,75,00,69,00,2e,00,64,00,6c,00,6c,00,2c,00,42,00,72,00,69,00,65,00,66,\
00,63,00,61,00,73,00,65,00,5f,00,43,00,72,00,65,00,61,00,74,00,65,00,20,00,\
25,00,32,00,21,00,64,00,21,00,20,00,25,00,31,00,00,00
; REG_MULTI_SZ
"SystemBiosVersion"=hex(7):47,00,42,00,54,00,20,00,20,00,20,00,20,00,2d,00,20,\
00,34,00,32,00,33,00,30,00,32,00,65,00,33,00,31,00,00,00,41,00,77,00,61,00,\
72,00,64,00,20,00,4d,00,6f,00,64,00,75,00,6c,00,61,00,72,00,20,00,42,00,49,\
00,4f,00,53,00,20,00,76,00,36,00,2e,00,30,00,30,00,50,00,47,00,00,00,00,00
; REG_MULTI_SZ
"SmartoolX.BaseAddin,Version=\"8.0.2632.25087\",Culture=\"neutral\",FileVersion=\"8.0.2632.25087\",ProcessorArchitecture=\"MSIL\""=hex(7):74,\
00,43,00,64,00,24,00,5e,00,4b,00,32,00,6a,00,64,00,3f,00,2c,00,50,00,47,00,\
45,00,43,00,4d,00,43,00,59,00,7a,00,52,00,53,00,6d,00,61,00,72,00,74,00,6f,\
00,6f,00,6c,00,58,00,3e,00,76,00,7a,00,6c,00,72,00,2d,00,40,00,6b,00,37,00,\
29,00,3f,00,55,00,25,00,40,00,4f,00,2c,00,56,00,72,00,6a,00,34,00,48,00,00,\
00,00,00
; REG_RESOURCE_LIST
"\\Device\\0000003f.Raw"=hex(8):01,00,00,00,0f,00,00,00,ff,ff,ff,ff,00,00,00,\
00,01,00,00,00,02,03,00,00,09,00,00,00,09,00,00,00,ff,ff,ff,ff
; REG_FULL_RESOURCE_DESCRIPTOR
"Configuration Data"=hex(9):ff,ff,ff,ff,ff,ff,ff,ff,00,00,00,00,02,00,00,00,05,\
00,00,00,0c,00,00,00,00,00,00,00,00,00,00,00,80,00,ff,03,00,00,3f,00,fe,00,\
01,00,05,00,00,00,10,00,00,00,00,00,00,00,00,00,00,00,00,00,0c,00,00,ce,00,\
00,00,00,0f,00,00,00,01,00
; REG_RESOURCE_REQUIREMENTS_LIST
"Pci"=hex(a):48,02,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,01,00,00,00,01,00,01,00,11,00,00,00,00,01,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,00,00,ff,ff,ff,ff,00,00,00,00,\
08,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,05,00,00,00,00,00,00,ff,\
ff,00,00,00,00,00,00,08,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,40,01,\
00,00,00,00,00,00,7f,01,00,00,00,00,00,00,08,01,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,02,00,00,00,00,00,00,ff,02,00,00,00,00,00,00,08,01,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,00,00,00,6f,03,00,00,00,\
00,00,00,08,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,78,03,00,00,00,00,\
00,00,7a,03,00,00,00,00,00,00,08,01,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,e8,02,00,00,00,00,00,00,ff,02,00,00,00,00,00,00,08,01,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,f0,01,00,00,00,00,00,00,f8,01,00,00,00,00,00,00,08,\
01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,b0,03,00,00,00,00,00,00,cf,03,\
00,00,00,00,00,00,08,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,e8,03,00,\
00,00,00,00,00,ff,03,00,00,00,00,00,00,08,01,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,ce,01,00,00,00,00,00,00,cf,01,00,00,00,00,00,00,08,01,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,00,00,00,ff,03,00,00,00,00,\
00,00,00,03,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,10,00,00,00,00,\
00,ff,ff,ff,ff,00,00,00,00,08,03,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,0f,00,00,00,00,00,ff,ff,0f,00,00,00,00,00,08,03,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,08,00,00,00,00,00,ff,ff,0b,00,00,00,00,00,08,03,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,08,00,00,00,00,00,ff,ff,0f,\
00,00,00,00,00,08,03,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,08,00,\
00,00,00,00,ff,ff,bf,ff,00,00,00,00
; REG_QWORD
"LastInstallTime"=hex(b):d6,1a,3e,7a,f8,c4,c9,01
; REG_DWORD
"FeatureSet"=dword:a0033fff
; REG_SZ
"1"="\"C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE\" /e"
"2"="\"C:\\Program Files\\Paint.NET\\PaintDotNet.exe\" \"%1\""
"3"="\"C:\\Program Files\\Paint.NET\\PaintDotNet.exe\" \"print:%1\""
"4"="C:\\Program Files\\Paint.NET\\PaintDotNet.exe"
"Path"="C:\\Program Files\\Paint.NET"
[HKEY_LOCAL_MACHINE\SOFTWARE\My Program\System]
; удаление данных
"Component Information"=-
; удаление секции My Program
[-HKEY_LOCAL_MACHINE\SOFTWARE\My Program]
Для Inno Setup, это бы выглядело так:
[Registry]
; Converter v.0.1.3
Root: HKLM; SubKey: SOFTWARE\My Program; Flags: uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\My Program\System; ValueType: binary; ValueName: Component Information; ValueData: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\My Program\System; ValueType: none; ValueName: WMVFile; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\My Program\System; ValueType: expandsz; ValueName: Command; ValueData: %SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\syncui.dll,Briefcase_Create %2!d! %1; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\My Program\System; ValueType: multisz; ValueName: SystemBiosVersion; ValueData: GBT - 42302e31{break}Award Modular BIOS v6.00PG{break}{break}; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\My Program\System; ValueType: multisz; ValueName: "SmartoolX.BaseAddin,Version=""8.0.2632.25087"",Culture=""neutral"",FileVersion=""8.0.2632.25087"",ProcessorArchitecture=""MSIL"""; ValueData: tCd$^K2jd?,PGECMCYzRSmartoolX>vzlr-@k7)?U%@O,Vrj4H{break}{break}; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\My Program\System; ValueType: dword; ValueName: FeatureSet; ValueData: $a0033fff; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\My Program\System; ValueType: string; ValueName: 1; ValueData: """C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE"" /e"; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\My Program\System; ValueType: string; ValueName: 2; ValueData: """C:\Program Files\Paint.NET\PaintDotNet.exe"" ""%1"""; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\My Program\System; ValueType: string; ValueName: 3; ValueData: """C:\Program Files\Paint.NET\PaintDotNet.exe"" ""print:%1"""; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\My Program\System; ValueType: string; ValueName: 4; ValueData: C:\Program Files\Paint.NET\PaintDotNet.exe; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\My Program\System; ValueType: string; ValueName: Path; ValueData: C:\Program Files\Paint.NET; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\My Program\System; ValueName: Component Information; Flags: deletevalue
Root: HKLM; SubKey: SOFTWARE\My Program; Flags: deletekey
[Code]
var
res: Integer;
reg,str: string;
// к сожалению некоторые типы ключей не поддерживаются в IS, поэтому приходится вносить изменения в реестр таким образом... :)
procedure CreateReg;
begin
reg:= ExpandConstant('{tmp}\regkey.reg');
str:= 'Windows Registry Editor Version 5.00' + #13#13 +
'[HKEY_LOCAL_MACHINE\SOFTWARE\My Program\System]' + #13 +
// тип ключа - REG_RESOURCE_LIST
'"\\Device\\0000003f.Raw"=hex(8):01,00,00,00,0f,00,00,00,ff,ff,ff,ff,00,00,00,00,01,00,00,00,02,03,00,00,09,00,00,00,09,00,00 ,00,ff,ff,ff,ff' + #13#13 +
'[HKEY_LOCAL_MACHINE\SOFTWARE\My Program\System]' + #13 +
// тип ключа - REG_FULL_RESOURCE_DESCRIPTOR
'"Configuration Data"=hex(9):ff,ff,ff,ff,ff,ff,ff,ff,00,00,00,00,02,00,00,00,05,00,00,00,0c,00,00,00,00,00,00,00,00,00,00 ,00,80,00,ff,03,00,00,3f,00,fe,00,01,00,05,00,00,00,10,00,00,00,00,00,00,00,00,00,00,00,00,00,0c,00, 00,ce,00,00,00,00,0f,00,00,00,01,00' + #13#13 +
'[HKEY_LOCAL_MACHINE\SOFTWARE\My Program\System]' + #13 +
// тип ключа - REG_RESOURCE_REQUIREMENTS_LIST
'"Pci"=hex(a):48,02,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00 ,00,01,00,01,00,11,00,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,00,00, ff,ff,ff,ff,00,00,00,00,08,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,05,00,00,00,00,00,00,ff,f f,00,00,00,00,00,00,08,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,40,01,00,00,00,00,00,00,7f,01,00 ,00,00,00,00,00,08,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,02,00,00,00,00,00,00,ff,02,00,00, 00,00,00,00,08,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,03,00,00,00,00,00,00,6f,03,00,00,00,0 0,00,00,08,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,78,03,00,00,00,00,00,00,7a,03,00,00,00,00,00 ,00,08,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,e8,02,00,00,00,00,00,00,ff,02,00,00,00,00,00,00, 08,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,f0,01,00,00,00,00,00,00,f8,01,00,00,00,00,00,00,08,0 1,00,00,00,00,00,00,00,00,00,00,00,00,00,00,b0,03,00,00,00,00,00,00,cf,03,00,00,00,00,00,00,08,01,00 ,00,00,00,00,00,00,00,00,00,00,00,00,00,e8,03,00,00,00,00,00,00,ff,03,00,00,00,00,00,00,08,01,00,00, 00,00,00,00,00,00,00,00,00,00,00,00,ce,01,00,00,00,00,00,00,cf,01,00,00,00,00,00,00,08,01,00,00,00,0 0,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,00,00,00,ff,03,00,00,00,00,00,00,00,03,00,00,00,00,00 ,00,00,00,00,00,00,00,00,00,00,00,10,00,00,00,00,00,ff,ff,ff,ff,00,00,00,00,08,03,00,00,00,00,00,00, 00,00,00,00,00,00,00,00,00,00,0f,00,00,00,00,00,ff,ff,0f,00,00,00,00,00,08,03,00,00,00,00,00,00,00,0 0,00,00,00,00,00,00,00,00,08,00,00,00,00,00,ff,ff,0b,00,00,00,00,00,08,03,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,00,08,00,00,00,00,00,ff,ff,0f,00,00,00,00,00,08,03,00,00,00,00,00,00,00,00,00,00, 00,00,00,00,00,00,08,00,00,00,00,00,ff,ff,bf,ff,00,00,00,00' + #13#13 +
'[HKEY_LOCAL_MACHINE\SOFTWARE\My Program\System]' + #13 +
// тип ключа - REG_QWORD, поддерживается в IS, начиная с версии 5.3
'"LastInstallTime"=hex(b):d6,1a,3e,7a,f8,c4,c9,01' + #13#13 +
'';
SaveStringToFile(reg, str, False);
end;
// заносим ключ в реестр
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then begin
CreateReg;
Exec('regedit.exe',' /s ' + AddQuotes(reg),ExpandConstant('{win}'),SW_HIDE,ewWaitUntilTerminated,res);
DeleteFile(reg);
end;
end;
// при деинсталляции удаляем значения
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then begin
RegDeleteValue(HKEY_LOCAL_MACHINE,'SOFTWARE\My Program\System','\\Device\\0000003f.Raw');
RegDeleteValue(HKEY_LOCAL_MACHINE,'SOFTWARE\My Program\System','Configuration Data');
RegDeleteValue(HKEY_LOCAL_MACHINE,'SOFTWARE\My Program\System','Pci');
RegDeleteValue(HKEY_LOCAL_MACHINE,'SOFTWARE\My Program\System','LastInstallTime');
end;
end;
// -= Converter v.0.1.3 =-
// Затраченное время: 31 мсек.
Как это будет выглядеть для NSIS?
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC