安装XNA游戏的依赖项:XNA Framework注册表路径在哪里?

时间:2011-09-16 16:42:44

标签: installer xna registry nsis

如何安装NSNA安装程序,检查用户是否安装了XNA和.NET框架,如果不安装则安装它们? (我宁愿没有添加额外的提示框,只有一个页面通知用户我正在进行安装。)

编辑:由于没有答案,我只想问这个问题: 注册表中的XNA框架在哪里?微软声称它位于HKEY_LOCAL_MACHINE \ Software \ Microsoft \ XNA \ Framework
http://msdn.microsoft.com/library/bb464156(XNAGameStudio.40).aspx

但是我通过regedit(在Windows 7中)走了那条路,但它并不存在。但是,在HKEY_CURRENT_USER \ Software \ Microsoft \ XNA \
中有一个XNA文件夹 但不是/ Framework目录。

3 个答案:

答案 0 :(得分:3)

您要查找的注册表项是:

HKEY_LOCAL_MACHINE\Software\Microsoft\XNA\Framework\v4.0 (32-bit)
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\XNA\Framework\v4.0 (64-bit)

在我的Windows 7 Ultimate 64bit计算机上,这些检查都返回true。

我刚写完NSIS安装程序,这是我用来安装XNA部分的脚本:

Section "XNA Framework 4.0" XNA
    #check 32bit
    ReadRegDWORD $0 HKLM "Software\Microsoft\XNA\Framework\v4.0" "Installed"
    #check 64bit
    ReadRegDWORD $1 HKLM "Software\Wow6432Node\Microsoft\XNA\Framework\v4.0" "Installed"    
    DetailPrint "32 bit XNA:"
  DetailPrint "  $0"
    DetailPrint "64 bit XNA:"
  DetailPrint "  $1"
  File "xnafx40_redist.msi"
    ${If} $0 != 1 
    ${AndIf} $1 != 1
        #they do not have framework 4 installed
        ExecWait '"msiexec" /i "$INSTDIR\xnafx40_redist.msi"  /passive'
    ${EndIf}
    Delete /REBOOTOK "$INSTDIR\xnafx40_redist.msi"
SectionEnd

答案 1 :(得分:2)

您使用的是Windows 7 64位吗? 如果是这样,您可能会查找错误的注册表项。 请参阅:http://en.wikipedia.org/wiki/WoW64#Registry_and_file_system

64位Windows中的密钥有特殊转换,例如:

HKEY_LOCAL_MACHINE\Software\Wow6432Node 

是32位等效的

HKEY_LOCAL_MACHINE\Software

(虽然32位应用程序不知道这种重定向)。

答案 2 :(得分:1)

在NSIS中,您应该在阅读64位/本机注册表时使用SetRegView 64,这样您就不必处理Wow6432Node ......