2017-03-01 8 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 

에 파일을 복사 할 수 없습니다/system32를 나는 아무것도하지 않습니다 또는 내가 NSISNSIS이 창에 python27.dll 파일을 복사 내 스크립트입니다 system32를

에 새 사전에 감사 worng 일을하고이 파일을 실행하면
+0

좋은 해결책이라고 생각하지 않습니다. 사용자에게 앱의 전제 조건에 대해 알려주고 앱에 적합한 Python 버전을 설치하도록 요청하십시오. 공식 Python 인스톨러를 인스톨러에 포함시켜 사용자가 직접 설치할 수있게하거나 사용자가 인스톨을 확인했다면 시작할 수 있습니다. 이 버전이 이미 있는지 확인하거나 앱을 실행할 수있는 다른 버전이 있는지 확인하는 것도 잊지 마십시오. 희망이 도움이됩니다. 당신이 당신의 방법을 따라야 할 경우 "Installer.exe를" '제 "nameofsection"SetOutPath의 $의 SYSDIR 파일 "python27.dll"SectionEnd' – mohessaid

+0

를 OutFile을 SetOverwrite 에 #을 제거하기 위해 설치 디렉토리 을 InstallDir $ DESKTOP #을 정의 SectionEndUAC.nsh # 시작 기본 섹션 절 "nameofsection" \t SetOutPath $ SYSDIR \t 파일 "python27.dll"를 포함 MUI2.nsh 을! 포함 윈도우 7 RequestExecutionLevel 관리 !에서 메뉴 바로 가기를 시작그것은 아무것도하지 않습니다 –

+0

당신이 더 설명 할 수 있다면 어떻게 내 공식 스크립트를 설치할 수 있습니까? nsis에 새로움 –

답변

0

64 비트 Windows의 경우 two system32 directories, 32 비트 .DLL 및 64 비트 .DLL에 각각 하나씩 있습니다. 64 비트 프로그램 (Explorer 포함)은 32 비트 system32 디렉토리의 실제 이름을 표시합니다. SysWOW64. 실제 system32 디렉토리 디렉토리는 32 비트 프로그램에서 숨겨져 있습니다.

: 당신의 .DLL 32 비트 당신은 특별한 아무것도 할 필요가 없습니다 다음 항상 경우

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 

:

은 항상 당신 disable the redirection 필요 "진짜"/ 기본 system32 폴더에 설치하려면

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을 설치해야한다고 결정합니다. 여전히이 작업을 고집한다면 SharedDLLs이 올바르게 설정되도록 파일을 설치하려면 적어도 Library.nsh을 사용해야합니다.