Установка зависимостей для игры XNA: где находится путь к реестру XNA Framework? - PullRequest
0 голосов
/ 16 сентября 2011

Как заставить установщик NSIS проверить, установлены ли у пользователя платформы XNA и .NET, и установить их, если они не установлены?(Я бы предпочел, чтобы он не добавлял дополнительные окна с подсказками, только на странице, информирующей пользователя о том, что я делаю установку).

РЕДАКТИРОВАТЬ: Из-за отсутствия ответа я просто спрашиваю: Гдетакое платформа XNA в реестре?Microsoft утверждает, что она находится в HKEY_LOCAL_MACHINE \ Software \ Microsoft \ XNA \ Framework
(http://msdn.microsoft.com/library/bb464156(XNAGameStudio.40).aspx)

Но я пошел по этому пути через regedit (в Windows 7), и его там не было,Однако была папка XNA по адресу HKEY_CURRENT_USER \ Software \ Microsoft \ XNA \
, но не каталог / Framework.

Ответы [ 3 ]

3 голосов
/ 16 июня 2012

Записи реестра, которые вы ищете:

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

На моей 64-битной машине Windows 7 Ultimate обе эти проверки возвращают 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
2 голосов
/ 17 сентября 2011

Вы используете Windows 7 64bit?Если это так, вы можете искать неправильный раздел реестра.Смотрите это: http://en.wikipedia.org/wiki/WoW64#Registry_and_file_system

Существует специальное преобразование для ключей в 64-битной Windows, например:

HKEY_LOCAL_MACHINE\Software\Wow6432Node 

- это 32-битный эквивалент

HKEY_LOCAL_MACHINE\Software

(хотя 32-разрядные приложения не знают об этом перенаправлении).

1 голос
/ 17 июня 2012

В NSIS вы должны использовать SetRegView 64 при чтении 64-битного / собственного реестра, чтобы вам не приходилось иметь дело с Wow6432Node ...

...