Slackluster
28th March 2009 00:46 UTC
Screensaver Installer / Vista 64 Issue
I made an installer for a screensaver that seems to work fine on xp and vista but I am having problems with vista 64. Here is the relevant code...
!include "x64.nsh"
InstallDir "$SYSDIR"
SetOutPath "$INSTDIR"
File "PixelWords.scr"
Exec 'RUNDLL32.exe DESK.CPL,InstallScreenSaver PixelWords.scr'
This is difficult for me to test because I don't have a vista 64 machine accessible to me. I think I am at the point where it does install to the syswow64 folder but it is still not persisting in the screensavers window. Can anyone offer some advice?
Slackluster
28th March 2009 05:43 UTC
Ok, my bro tried the install on his vista 64 system. It seems to have worked. Here is the script for those interested.
;NSIS Screensaver Install Script
;Adaped from Header Bitmap Example Script by Joost Verburg
;--------------------------------
;Include Modern UI
        !include "MUI2.nsh"
        !include "x64.nsh"
;--------------------------------
;General
        ;Name and file
        Name "Pixel Words"
        OutFile "PixelWordsSetup.exe"
        ;Default installation folder
        InstallDir "$SYSDIR"
        ;Request application privileges for Windows Vista
        RequestExecutionLevel none 
;--------------------------------
;Interface Configuration
        !define MUI_HEADERIMAGE
        !define MUI_HEADERIMAGE_BITMAP "background.bmp" ; optional
        !define MUI_ABORTWARNING
        !define MUI_ICON "icon.ico"
        !define MUI_FINISHPAGE_RUN
        !define MUI_FINISHPAGE_RUN_TEXT "Set Pixel Words as the active screensaver"    
        !define MUI_FINISHPAGE_RUN_FUNCTION "SetScreensaver"
        ;!define MUI_FINISHPAGE_RUN_NOTCHECKED
        ; show install details
        ;!define MUI_FINISHPAGE_NOAUTOCLOSE
        ;ShowInstDetails show
;--------------------------------
;Pages
        !insertmacro MUI_PAGE_LICENSE "License.txt"
        !insertmacro MUI_PAGE_INSTFILES
        !insertmacro MUI_PAGE_FINISH
  
;--------------------------------
;Languages
        !insertmacro MUI_LANGUAGE "English"
;--------------------------------
;Installer Sections
Section "Dummy Section" SecDummy
        SetOutPath "$INSTDIR"
        File "PixelWords.scr"
SectionEnd
Function SetScreensaver
        ;Set screensaver and make it active
        Exec 'RUNDLL32.exe DESK.CPL,InstallScreenSaver PixelWords.scr'
        
FunctionEnd
     
    
      LingoSag
      28th March 2009 06:32 UTC
      ;Forget Exec 'RUNDLL32.exe DESK.CPL,InstallScreenSaver PixelWords.scr'
      
      ;Edit registry directly
      
      
      ;For Installation
      
      !include LogicLib.nsh
      
      !define PRODUCT_NAME "Your ScreenSaver Name"
      
      ;IMPORTANT After file on Disq
      
      GetFullPathName /SHORT $sDosName "$SYSDIR\${PRODUCT_NAME}.scr"
      
      WriteRegStr HKCU "Control Panel\Desktop" "SCRNSAVE.EXE" $sDosName
      
      WriteRegStr HKCU "Control Panel\Desktop" "ScreenSaveActive" "1"
      
      
      ;For UnInstall
      
      ReadRegStr $sUnInstActiveScnSaverDosName HKCU "Control Panel\Desktop" "SCRNSAVE.EXE"
      
      GetFullPathName /SHORT $sUnInstScnSaverDosName "$SYSDIR\${PRODUCT_NAME}.scr"
      
      ;The Conditionnal is for not deactivate de ScreenSaver is not your...
      
      
      ${If} $sUnInstActiveScnSaverDosName == $sUnInstScnSaverDosName
      
      DeleteRegValue HKCU "Control Panel\Desktop" "SCRNSAVE.EXE"
      
      WriteRegStr HKCU "Control Panel\Desktop" "ScreenSaveActive" "0"
      
      ${EndIf}
      
      ;Work perfectly on Xp I can't garanty on Vista 64
      
      ;Vista, what Vista ??? :)
      
      ;SylBou