正在对.NET windows installer应用程序执行注册表搜索
我有一个.NET winform安装程序应用程序。在安装之前,我正在进行注册表搜索,以检查机器上是否安装了MS Access运行时 搜索目标机器 搜索目标机的性质 发射条件 发射条件的性质 但是,我希望避免在启动条件的属性中硬编码路径,如正在对.NET windows installer应用程序执行注册表搜索,windows,winforms,windows-installer,Windows,Winforms,Windows Installer,我有一个.NET winform安装程序应用程序。在安装之前,我正在进行注册表搜索,以检查机器上是否安装了MS Access运行时 搜索目标机器 搜索目标机的性质 发射条件 发射条件的性质 但是,我希望避免在启动条件的属性中硬编码路径,如“C:\Program Files\Microsoft Office\Office15\”。 到目前为止,我已经尝试了“[ProgramFilesFolder]\Microsoft Office\Office15\”,“%ProgramFiles%\Mi
“C:\Program Files\Microsoft Office\Office15\”
。
到目前为止,我已经尝试了“[ProgramFilesFolder]\Microsoft Office\Office15\”,“%ProgramFiles%\Microsoft Office\Office15\”
,但这两个选项都不起作用
正确的注册表搜索:尝试搜索注册表的适当的32位部分
:
SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\App path\MSACCESS.EXE
关键是在字符串开头包含Wow6432Node
自定义操作:这不是公认的最佳实践,但我喜欢使用自定义操作来检查系统()。检查自定义操作是只读的,不需要任何回滚,对系统没有危险,并且可以相对安全地抑制错误 我喜欢检查自定义操作的原因是,如果系统检查需求变得更复杂,您可以有充分的灵活性。我发现AppSearch有时会变得非常混乱自定义操作不容易与Visual Studio安装程序项目一起使用
比特度:我不太使用应用程序搜索,但这是一台真正的32位机器(相当老式)还是一台带有32位组件的64位机器?对于后者,这里有一个关于注册表和磁盘上的核心位相关路径的提示: 注册表:
- 64位:
HKEY\U LOCAL\U MACHINE\软件
- 32位:
HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6432Node
- 64位:
C:\ProgramFiles\
- 32位:
C:\ProgramFiles(x86)\
- 64位:
(是的,真的)C:\Windows\System32\
- 32位:
(是的,真的)C:\Windows\SysWOW64\
链接:
- -注册地点
32位部分
:
SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\App path\MSACCESS.EXE
关键是在字符串开头包含Wow6432Node
自定义操作:这不是公认的最佳实践,但我喜欢使用自定义操作来检查系统()。检查自定义操作是只读的,不需要任何回滚,对系统没有危险,并且可以相对安全地抑制错误 我喜欢检查自定义操作的原因是,如果系统检查需求变得更复杂,您可以有充分的灵活性。我发现AppSearch有时会变得非常混乱自定义操作不容易与Visual Studio安装程序项目一起使用
比特度:我不太使用应用程序搜索,但这是一台真正的32位机器(相当老式)还是一台带有32位组件的64位机器?对于后者,这里有一个关于注册表和磁盘上的核心位相关路径的提示: 注册表:
- 64位:
HKEY\U LOCAL\U MACHINE\软件
- 32位:
HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6432Node
- 64位:
C:\ProgramFiles\
- 32位:
C:\ProgramFiles(x86)\
- 64位:
(是的,真的)C:\Windows\System32\
- 32位:
(是的,真的)C:\Windows\SysWOW64\
链接:
- -注册地点
对于Microsoft Access运行时,我刚才提到了为注册表搜索设置的属性名称。对于Crystal Report Runtime,我已经指定了一个值,该值是应该存在的运行时的特定版本。在我的例子中,我特别希望机器上有版本“13.0.4”。因此,我最终实现了这一功能,并在32位和64位Windows机器上成功地进行了测试 我的申请取决于两个先决条件。 1.Crystal报表运行时。 2.Microsoft Access运行时 因此创建了两个运行时的注册表搜索