在 64 位和 32 位系统中设置注册表值的通用安装程序?
common installe r to set registry value in 64 bit and 32 bit system?
我的 wix 应用程序中有一个注册表值 setter,如下所示
<Component Id="EngageAssistanceAutostart" Guid="f9e92a81-506d-4fe9-836b-564420a98ea1" Win64="yes">
<RegistryValue Id="crimsonwatchdog" Root="HKLM" Action="write"
Key="Software\Microsoft\Windows\CurrentVersion\Run"
Name="Crimson watch dog"
Value="[INSTALLFOLDER]Crimson.Watchdog.exe"
Type="string" />
如你所见,为了在windows 64位系统中编辑注册表,我保留了win64="yes"
而且我还必须设置 patform="x64"
<Package InstallerVersion="200" Platform="x64" Compressed="yes" InstallScope="perMachine" InstallPrivileges="elevated" AdminImage="yes" />
如果我不这样做,我将无法设置注册。 64位系统中的值。
如果我这样做,这个安装程序将无法在 32 位系统中运行。
是否有任何解决方案可以让我在 64 位和 32 位系统中设置注册表值?
您不需要将平台设置为 x64 以在 64 位配置单元中创建注册表。
组件将决定在何处创建此注册表。
在您的情况下,因为它只是 运行 键,您应该创建 未设置为 x64 的单个组件。
MSI 将使用此类组件做什么。
在 x86 计算机上,将在标准位置创建注册表项。
在 x64 机器上,注册表项将在 Wow6432Node 下创建,但对于 运行 这应该不是问题。
我的 wix 应用程序中有一个注册表值 setter,如下所示
<Component Id="EngageAssistanceAutostart" Guid="f9e92a81-506d-4fe9-836b-564420a98ea1" Win64="yes">
<RegistryValue Id="crimsonwatchdog" Root="HKLM" Action="write"
Key="Software\Microsoft\Windows\CurrentVersion\Run"
Name="Crimson watch dog"
Value="[INSTALLFOLDER]Crimson.Watchdog.exe"
Type="string" />
如你所见,为了在windows 64位系统中编辑注册表,我保留了win64="yes"
而且我还必须设置 patform="x64"
<Package InstallerVersion="200" Platform="x64" Compressed="yes" InstallScope="perMachine" InstallPrivileges="elevated" AdminImage="yes" />
如果我不这样做,我将无法设置注册。 64位系统中的值。 如果我这样做,这个安装程序将无法在 32 位系统中运行。
是否有任何解决方案可以让我在 64 位和 32 位系统中设置注册表值?
您不需要将平台设置为 x64 以在 64 位配置单元中创建注册表。 组件将决定在何处创建此注册表。 在您的情况下,因为它只是 运行 键,您应该创建 未设置为 x64 的单个组件。
MSI 将使用此类组件做什么。
在 x86 计算机上,将在标准位置创建注册表项。 在 x64 机器上,注册表项将在 Wow6432Node 下创建,但对于 运行 这应该不是问题。