# define name of installer
OutFile "installer.exe"
SetOverwrite on
# define installation directory
InstallDir $DESKTOP
# For removing Start Menu shortcut in Windows 7
RequestExecutionLevel Admin
Section
;StrCpy $INSTDIR "c:\Windows\System32\"
SetOutPath $WINDIR\System32\
;MessageBox MB_OK $WINDIRSetOutPath $WINDIR\System32\
MessageBox MB_OK $SYSDIR
File "python27.dll"
SectionEnd
这是我将python27.dll文件复制到windows / system32的脚本 当我运行这个文件时,它什么也没做,或者我在做什么 非常感谢nsis
答案 0 :(得分:2)
在64位Windows上有two system32 directories,一个用于32位.DLL,另一个用于64位.DLL。 64位程序(包括Explorer)查看32位system32目录的真实名称; Syswow64资料。真正的system32目录目录对32位程序是隐藏的。
要始终安装到"真正的" / native system32文件夹,您需要disable the redirection:
RequestExecutionLevel Admin
!include x64.nsh
Section
SetOutPath $SysDir
${If} ${RunningX64}
${DisableX64FSRedirection}
File "myfiles\64\file.dll" ; Install 64-bit file on 64-bit Windows
${EnableX64FSRedirection}
${Else}
File "myfiles\32\file.dll" ; Install 32-bit file on 32-bit Windows
${EndIf}
SectionEnd
如果您的.DLL始终是32位,那么您不必做任何特别的事情:
RequestExecutionLevel Admin
Section
SetOutPath $SysDir
File "myfiles\file.dll" ; Install 32-bit file
SectionEnd
近20年来,我们不鼓励在system32中安装您的文件,您真的应该使用$COMMONFILES
或$PROGRAMFILES\<company name>\Shared Files
。
想象一下if two不同的软件供应商都认为他们需要在system32中安装python27.dll会发生什么?如果您仍然坚持这样做,那么您至少应该使用Library.nsh
来安装该文件,以便正确设置SharedDLLs
。