Nsis 不同操作系统的两个.exe版本

Nsis 不同操作系统的两个.exe版本,nsis,Nsis,我的基于NSIS的安装程序将某个.exe文件部署到所有windows平台的目标文件夹中。我们最近发现,如果要在windows 8上安装,则需要部署该.exe文件的稍有不同的版本 我们不想有两个安装人员。 我们希望有一个安装程序“保存”两个.exe文件,并为windows8部署正确的一个,其余的部署另一个.exe 有没有关于我们如何实现这一目标的建议?是否在安装时检测windows8,并在检测到.exe文件时复制该文件的其他版本 谢谢。我在nsis上遇到了类似的问题,检测到不同的Windows版本

我的基于NSIS的安装程序将某个.exe文件部署到所有windows平台的目标文件夹中。我们最近发现,如果要在windows 8上安装,则需要部署该.exe文件的稍有不同的版本

我们不想有两个安装人员。 我们希望有一个安装程序“保存”两个.exe文件,并为windows8部署正确的一个,其余的部署另一个.exe

有没有关于我们如何实现这一目标的建议?是否在安装时检测windows8,并在检测到.exe文件时复制该文件的其他版本


谢谢。

我在nsis上遇到了类似的问题,检测到不同的Windows版本。我刚刚写了一个三行C++应用程序调用Windows API来查找OS版本,然后把控制台输出写为字符串。从nsis,您可以将此输出读入一个变量,然后根据此变量的值进行切换。

您可以通过包含nsis提供的
LogicLib.nsh
WinVer.nsh
脚本,非常精确地测试平台

下面是我正在使用的一个函数,在安装应用程序之前,我会进行一些健全性检查:

函数检查不支持平台
${if}${AtLeastWin95}
${AndIf}${AtMostWinME}
;NT4和W95使用相同的版本号,如果需要精确标识,可以使用${IsNT}
MessageBox MB_OK | MB_图标提示“抱歉,您的Windows版本不受平台支持。$\n\
目前支持的平台为2000/XP/2003/Vista/Seven$\n\
无法继续安装。“/SD IDOK
中止
${elseIf}${isWin2008}
${orIf}${AtLeastWin2008R2}
MessageBox MB_OK | MB_图标信息“请注意,对Windows 2008和Windows 8的支持处于测试阶段。$\n\
目前支持的平台为2000/XP/2003/Vista/Seven”/SD IDOK
${endif}
功能端

还有更多的可能性,请查看
WinVer.nsh
的标题以了解更多示例。

我知道这已经很旧了,但如果有人在
文件
命令中遇到问题,这是预期的语法:

!include "WinVer.nsh"
...
; The stuff to install
Section "MyProgram (required)"
    ${If} ${AtMostWin2003}
        File /oname=MyFile.exe "MyFile2003.exe"  
    ${Else}
       File "MyFile.exe"
    ${EndIf} 
SectionEnd

这似乎有点过分,因为您可以使用一些已经包含的宏来执行检查。