2012-10-24 4 views
0

솔루션은 다음과 같습니다Windows XP, 2000, Vista 및 7에 NSIS를 사용하여 프로그래밍 방식으로 스크린 세이버를 설치하려면 어떻게합니까? 근무 한 적이없는 나는 이미 시도했습니다

1) $에 WINDIR \ system.ini를

[boot] 
SCRNSAVE.EXE $SYSDIR\savername.scr 

2)를 호출 USER32.DLL :: SystemParametersInfo (17, 1 INI 키를 추가합니다 , 0, 2)

XP에서 위의 작품이 아닌

rundll32.exe desk.cpl,InstallScreenSaver <path to screensaver> 

2000 년 작품의 이런 종류의하지만 난 갈 때 다음 구성 대화 상자를 팝업 2000 년 대화 상자로 돌아가서 설정이 사라졌습니다.

모든 플랫폼에서 작동하는 솔루션이나 솔루션 모음을 찾고 구성 화면을 팝업하지 않으며 구성 대화 상자를 열 때 타사 소프트웨어가 필요없는 설정을 유지합니다.

답변

0

여기에 나와있는 INI 방법과 레지스트리 방법을 조합 한 것은 How do I change the screensaver programatically?입니다. 내가 설치 디렉토리 \ WINDOWS \ system32를 및 패키지에 모두 스크린 세이버를 설치

!include WinVer.nsh 

; Install the executable 
${If} ${AtMostWinXP} 
    SetOutPath "$SYSDIR" 
    File screen.scr 
${EndIf} 
SetOutPath "$INSTDIR" 
File screen.scr 

; Set screensaver and make it active 
${If} ${AtMostWinXP} 
    WriteINIStr "$WINDIR\system.ini" "boot" "SCRNSAVE.EXE" "$SYSDIR\screen.scr" 

${Else} 
    WriteRegStr HKCU "Control Panel\desktop" "SCRNSAVE.EXE" "$INSTDIR\screen.scr" 
    WriteRegStr HKCU "Control Panel\desktop" "ScreenSaveActive" "1" 
${EndIf} 

; Notify system of the change 
System::Call 'user32.dll::SystemParametersInfo(17, 1, 0, 2)' 

주의 : 여기에 NSIS 코드입니다. 어떤 이유로 Windows 2000에서 system32에서의 설치가 작동하지 않았습니다.