Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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
nsis脚本无法在electron builder中生成_Nsis_Electron Builder - Fatal编程技术网

nsis脚本无法在electron builder中生成

nsis脚本无法在electron builder中生成,nsis,electron-builder,Nsis,Electron Builder,我需要做一些安装步骤,只有当某些版本的windows-说只有如果不是10。该脚本在electron builder(19.55.1)的上下文中使用 如何更改nsh脚本以实现此目的?从nsis wiki获取版本的代码没有帮助。需要帮助确定以下脚本的错误。 更好的是,是否有一种更简单/更易读的方法?在windows 10上,winver.nsh似乎无法胜任(至少nsis文档没有声明) 下面是我当前无法在electron builder中编译的脚本 !include LogicLib.nsh !inc

我需要做一些安装步骤,只有当某些版本的windows-说只有如果不是10。该脚本在electron builder(19.55.1)的上下文中使用 如何更改nsh脚本以实现此目的?从nsis wiki获取版本的代码没有帮助。需要帮助确定以下脚本的错误。 更好的是,是否有一种更简单/更易读的方法?在windows 10上,winver.nsh似乎无法胜任(至少nsis文档没有声明)

下面是我当前无法在electron builder中编译的脚本

!include LogicLib.nsh
!include x64.nsh

Function GetWindowsVersion

Push $R0
Push $R1

; check if Windows 10 family (CurrentMajorVersionNumber is new introduced in Windows 10)
ReadRegStr $R0 HKLM \
  "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentMajorVersionNumber

StrCmp $R0 '' 0 lbl_winnt

ClearErrors

; check if Windows NT family
ReadRegStr $R0 HKLM \
"SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion

IfErrors 0 lbl_winnt

; we are not NT
ReadRegStr $R0 HKLM \
"SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber

StrCpy $R1 $R0 1
StrCmp $R1 '4' 0 lbl_error

StrCpy $R1 $R0 3

StrCmp $R1 '4.0' lbl_win32_95
StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98

lbl_win32_95:
  StrCpy $R0 '95'
Goto lbl_done

lbl_win32_98:
  StrCpy $R0 '98'
Goto lbl_done

lbl_win32_ME:
  StrCpy $R0 'ME'
Goto lbl_done

lbl_winnt:

StrCpy $R1 $R0 1

StrCmp $R1 '3' lbl_winnt_x
StrCmp $R1 '4' lbl_winnt_x

StrCpy $R1 $R0 3

StrCmp $R1 '5.0' lbl_winnt_2000
StrCmp $R1 '5.1' lbl_winnt_XP
StrCmp $R1 '5.2' lbl_winnt_2003
StrCmp $R1 '6.0' lbl_winnt_vista
StrCmp $R1 '6.1' lbl_winnt_7
StrCmp $R1 '6.2' lbl_winnt_8
StrCmp $R1 '6.3' lbl_winnt_81
;StrCmp $R1 '10' lbl_winnt_10_2016

StrCpy $R1 $R0 4

StrCmp $R1 '10.0' lbl_winnt_10
Goto lbl_error

lbl_winnt_x:
  StrCpy $R0 "NT $R0" 6
Goto lbl_done

lbl_winnt_2000:
  Strcpy $R0 '2000'
Goto lbl_done

lbl_winnt_XP:
  Strcpy $R0 'XP'
Goto lbl_done

lbl_winnt_2003:
  Strcpy $R0 '2003'
Goto lbl_done

lbl_winnt_vista:
  Strcpy $R0 'Vista'
Goto lbl_done

lbl_winnt_7:
  Strcpy $R0 '7'
Goto lbl_done

lbl_winnt_8:
  Strcpy $R0 '8'
Goto lbl_done

lbl_winnt_81:
  Strcpy $R0 '8.1'
Goto lbl_done

lbl_winnt_10:
  Strcpy $R0 '10.0'
Goto lbl_done

lbl_error:
  Strcpy $R0 ''
lbl_done:

Pop $R1
Exch $R0
FunctionEnd

!macro customInstall
${GetWindowsVersion} $R0
${IfNot} $R0 == 10
${If} ${RunningX64}
; Do something
${Else}
; Do something
${EndIf}
${EndIf}
!macroend

我想你已经注释掉了
;StrCmp$R1'10'磅温特10'U 2016
行?尝试将行添加回,但将
lbl\u winnt\u 10\u 2016
更改为
lbl\u winnt\u 10

要调试东西,您可以添加一个
MessageBox mb_ok“R0=$R0,R1=$R1”
调用该代码中的各个位置,查看
StrCpy
之后的值,并查看它们在
StrCmp
中进行比较时是否有意义


WinVer.nsh在NSIS v3.0b2(2015)中获得了Windows 10支持。

错误消息是什么?WinVer中添加了Windows 10支持,谢谢。我没有检查Winver的文档。nsis声明的支持仅高达8.1。温弗解决了这个问题。