Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/math/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Installation 为XNA游戏安装依赖项:XNA框架注册表路径在哪里?_Installation_Xna_Registry_Nsis - Fatal编程技术网

Installation 为XNA游戏安装依赖项:XNA框架注册表路径在哪里?

Installation 为XNA游戏安装依赖项:XNA框架注册表路径在哪里?,installation,xna,registry,nsis,Installation,Xna,Registry,Nsis,如何让NSIS安装程序检查用户是否安装了XNA和.NET框架,如果没有安装,如何安装?(我不想让它添加额外的提示框,只希望有一个页面通知用户我正在进行安装) 编辑:由于没有答案,我只想问: XNA框架在注册表中的什么位置?微软声称它位于HKEY\U LOCAL\U MACHINE\Software\Microsoft\XNA\Framework () 但我通过regedit(在Windows7中)找到了这条路径,但它不在那里。然而,HKEY_CURRENT_USER\Software\Micro

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

编辑:由于没有答案,我只想问: XNA框架在注册表中的什么位置?微软声称它位于HKEY\U LOCAL\U MACHINE\Software\Microsoft\XNA\Framework
()

但我通过regedit(在Windows7中)找到了这条路径,但它不在那里。然而,HKEY_CURRENT_USER\Software\Microsoft\XNA\

但不是/Framework目录。

您使用的是64位Windows 7吗? 如果是这样,您可能正在查找错误的注册表项。 见此:

64位窗口中的键有特殊转换,例如:

HKEY_LOCAL_MACHINE\Software\Wow6432Node 
是32位的等效值

HKEY_LOCAL_MACHINE\Software

(尽管32位应用程序不知道此重定向)。

您使用的是64位Windows 7吗? 如果是这样,您可能正在查找错误的注册表项。 见此:

64位窗口中的键有特殊转换,例如:

HKEY_LOCAL_MACHINE\Software\Wow6432Node 
是32位的等效值

HKEY_LOCAL_MACHINE\Software

(尽管32位应用程序不知道此重定向)。

您要查找的注册表项包括:

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 64位计算机上,这两个检查都返回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

您要查找的注册表项包括:

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 64位计算机上,这两个检查都返回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

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

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

谢谢!我偶然发现了这一点(是的,我开始查找我不知道它的用途的每个注册表文件夹…)一段时间后,我忘了发布它,但这个答案对于任何也被这一点弄糊涂的人来说都是非常好的。谢谢!我偶然发现了这一点(是的……我开始查找每个注册表文件夹,我不知道它的用途……)一段时间后,我忘记了发布它,但这个答案对于任何也对此感到困惑的人来说都是很好的。