2012-10-25 4 views
0

Я пытаюсь сделать следующее в моем сценарии NSIS. Я не знаю NSIS, и мне просто было поручено настроить что-то. Идея: если это window8 принять некоторые EXE-файлы из другого места, чтобы развернуть на целевой машине:Скопируйте файл по условно

Так я начинаю с получением версии:

ReadRegStr $WINVER HKLM \ 
"SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion 

в списке файлов для установки I сделайте это:

;List of files to install 
File file1.exe 
File file2.exe 

${If} StrCmp $WINVER '6.2' 
    File .\otherlocationSource\file1.exe 
    File .\otherlocationSource\file2.exe 
${EndIf} 

Я получаю скрипт NSIS, компилирующий ошибку в строке $ {if} ....

Буду признателен за то, что я делаю неправильно.

ответ

0

В макросе $ {If} используется StrCmp внутри, синтаксис ${If} $WINVER == "6.2", но вы действительно должны использовать WinVer.nsh для проверки версии. (Вы можете получить значения версии от SVN, если ваша локальная копия не поддерживает Win8)

И для версии проверьте, что, если это не спецификация Win8, у вас должна быть логика, аналогичная «if $ major> 6 or ($ майор == 6 и $ minor> = 2) ", поэтому он также работает на Win9 и т. д.

Смежные вопросы