2017-03-01 172 views
-1
# 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 當我運行這個文件,它什麼都不做還是我做一些撥錯 在此先感謝新NSISNSIS無法文件複製到SYSTEM32

+0

我不認爲這是一個好的解決方案,請嘗試通知用戶有關您的應用程序的先決條件,並提示他安裝適合您的應用程序的Python版本。你可以在你的安裝包中包含官方的python安裝程序,這樣用戶可以直接安裝它,或者如果用戶選中安裝它,你可以啓動它。不要忘記檢查這個版本是否已經存在,或者是否有任何其他版本可以運行你的應用程序。希望這個幫助。 如果你必須遵循你的方法: '節 「nameofsection」 SetOutPath $ SYSDIR文件 「python27.dll」 SectionEnd' – mohessaid

+0

OutFile將 「Installer.exe的」 SetOverwrite上 #定義安裝目錄 INSTALLDIR $ DESKTOP #爲了去除開始在Windows 7 RequestExecutionLevel聯繫 !菜單快捷方式包括MUI2.nsh !包括UAC.nsh #啓動默認段 節 「nameofsection」 \t SetOutPath $ SYSDIR \t文件 「python27.dll」 SectionEnd 它什麼都不做 –

+0

如何在我的腳本中使用官方的python安裝如果你能解釋更多 nsis –

回答

0

在64位Windows上有two system32 directories,一個用於32位.DLL,另一個用於64位.DLL。 64位程序(包括資源管理器)查看32位system32目錄的真實名稱; Syswow64資料。真正的system32目錄目錄對32位程序隱藏。

要始終安裝到「真正的」 /本地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 

在system32中安裝文件已被阻止將近20年,您確實應該使用$COMMONFILES$PROGRAMFILES\<company name>\Shared Files

想象一下發生了什麼if two不同的軟件供應商都決定他們需要在system32中安裝python27.dll?如果你仍然堅持這樣做,那麼你至少應該使用Library.nsh來安裝該文件,以便SharedDLLs正確設置。

相關問題