基于架构的条件注册表更改
Conditional registry change based on architecture
我需要你宝贵的 Inno Setup 帮助(请耐心等待,因为我不是程序员)。
我被要求提供一个脚本,该脚本在安装 myprogram.exe
后执行(仅在 Windows 10 中)某些注册表更改。
在不同于 Windows 10 的所有其他操作系统中,安装程序仅运行 myprogram.exe
并且不执行任何检查。
在 Windows 10 安装 myprogram.exe
之后,我应该(在 x64 版本中)更改两个注册表项。
安装“myprogram.exe”后我应该更改的注册表项是:
在 64 位版本中:
HKLM\Software\Microsoft\Internet Explorer\Main\Feature Control\FEATURE_DOCUMENT_COMPATIBLE_MODE
HKLM\Software\Wow6432Node\Microsoft\Internet Explorer\Main\Feature Control\ FEATURE_DOCUMENT_COMPATIBLE_MODE
在 32 位版本中:
HKLM\Software\Microsoft\Internet Explorer\Main\Feature Control\FEATURE_DOCUMENT_COMPATIBLE_MODE
通过添加一个名为 myprogram.exe
的双字(在上述键中),其十六进制值为 BF
我尝试在每个 RegWriteDwordValue
语句的末尾添加 [Code]
部分和 MinVersion:
。
我不知道如何区分要修改的密钥与 32 位和 64 位版本以及如何创建具有十六进制值的双字 BF
。
到目前为止这是我的清单:
[Files]
Source: "C:\Meleena\myprogram.exe"; DestDir: "{tmp}"; Flags: ignoreversion
[Run]
Filename: "C:\Meleena\myprogram.exe";
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
if IsWin64 and if CurStep = sspostInstall then begin
RegWritedwordValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Internet Explorer\Main\Feature Control\ FEATURE_DOCUMENT_COMPATIBLE_MODE\',
'Myprogram.exe', BF); Minversion:10.0.10240
RegWritedwordValue(HKEY_LOCAL_MACHINE, 'Software\Wow6432Node\Microsoft\Internet Explorer\Main\Feature Control\ FEATURE_DOCUMENT_COMPATIBLE_MODE\',
'Myprogram.exe', BF); Minversion:10.0.10240
end;
if IsnotWin64 and if CurStep = sspostInstall then begin
RegWritedwordValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Internet Explorer\Main\Feature Control\ FEATURE_DOCUMENT_COMPATIBLE_MODE\',
'Myprogram.exe', BF); Minversion:10.0.10240
end;
end;
你能帮帮我吗?
您不需要为此使用 Pascal 脚本。 Inno Setup 本身就允许这样做。您只需要在 64-bit mode.
中允许设置 运行
[Setup]
; Allow 64-bit mode
ArchitecturesInstallIn64BitMode=x64
[Registry]
; Both 32-bit and 64-bit
Root: HKLM; \
Subkey: "Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DOCUMENT_COMPATIBLE_MODE"; \
ValueType: dword; ValueName: "myprogram.exe"; ValueData: BF; MinVersion:10.0.10240
; On 64-bit systems, install also to Software\Wow6432Node\Microsoft\...
; Note the HKLM32
Root: HKLM32; \
Subkey: "Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DOCUMENT_COMPATIBLE_MODE"; \
ValueType: dword; ValueName: "myprogram.exe"; ValueData: BF; MinVersion:10.0.10240; \
Check: IsWin64
注意是 FeatureControl
,不是 Feature Control
。
我需要你宝贵的 Inno Setup 帮助(请耐心等待,因为我不是程序员)。
我被要求提供一个脚本,该脚本在安装 myprogram.exe
后执行(仅在 Windows 10 中)某些注册表更改。
在不同于 Windows 10 的所有其他操作系统中,安装程序仅运行 myprogram.exe
并且不执行任何检查。
在 Windows 10 安装 myprogram.exe
之后,我应该(在 x64 版本中)更改两个注册表项。
安装“myprogram.exe”后我应该更改的注册表项是:
在 64 位版本中:
HKLM\Software\Microsoft\Internet Explorer\Main\Feature Control\FEATURE_DOCUMENT_COMPATIBLE_MODE
HKLM\Software\Wow6432Node\Microsoft\Internet Explorer\Main\Feature Control\ FEATURE_DOCUMENT_COMPATIBLE_MODE
在 32 位版本中:
HKLM\Software\Microsoft\Internet Explorer\Main\Feature Control\FEATURE_DOCUMENT_COMPATIBLE_MODE
通过添加一个名为 myprogram.exe
的双字(在上述键中),其十六进制值为 BF
我尝试在每个 RegWriteDwordValue
语句的末尾添加 [Code]
部分和 MinVersion:
。
我不知道如何区分要修改的密钥与 32 位和 64 位版本以及如何创建具有十六进制值的双字 BF
。
到目前为止这是我的清单:
[Files]
Source: "C:\Meleena\myprogram.exe"; DestDir: "{tmp}"; Flags: ignoreversion
[Run]
Filename: "C:\Meleena\myprogram.exe";
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
if IsWin64 and if CurStep = sspostInstall then begin
RegWritedwordValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Internet Explorer\Main\Feature Control\ FEATURE_DOCUMENT_COMPATIBLE_MODE\',
'Myprogram.exe', BF); Minversion:10.0.10240
RegWritedwordValue(HKEY_LOCAL_MACHINE, 'Software\Wow6432Node\Microsoft\Internet Explorer\Main\Feature Control\ FEATURE_DOCUMENT_COMPATIBLE_MODE\',
'Myprogram.exe', BF); Minversion:10.0.10240
end;
if IsnotWin64 and if CurStep = sspostInstall then begin
RegWritedwordValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Internet Explorer\Main\Feature Control\ FEATURE_DOCUMENT_COMPATIBLE_MODE\',
'Myprogram.exe', BF); Minversion:10.0.10240
end;
end;
你能帮帮我吗?
您不需要为此使用 Pascal 脚本。 Inno Setup 本身就允许这样做。您只需要在 64-bit mode.
中允许设置 运行[Setup]
; Allow 64-bit mode
ArchitecturesInstallIn64BitMode=x64
[Registry]
; Both 32-bit and 64-bit
Root: HKLM; \
Subkey: "Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DOCUMENT_COMPATIBLE_MODE"; \
ValueType: dword; ValueName: "myprogram.exe"; ValueData: BF; MinVersion:10.0.10240
; On 64-bit systems, install also to Software\Wow6432Node\Microsoft\...
; Note the HKLM32
Root: HKLM32; \
Subkey: "Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DOCUMENT_COMPATIBLE_MODE"; \
ValueType: dword; ValueName: "myprogram.exe"; ValueData: BF; MinVersion:10.0.10240; \
Check: IsWin64
注意是 FeatureControl
,不是 Feature Control
。