[virt-tools-list] [PATCH virt-viewer 1/5] win32: clean-up the NSIS installer, allow user install

Daniel P. Berrange berrange at redhat.com
Fri Mar 30 10:30:13 UTC 2012


On Fri, Mar 30, 2012 at 03:37:41AM +0200, Marc-André Lureau wrote:
> ---
>  data/virt-viewer.nsis.in |   61 ++++++++++++++++++++++++++++-----------------
>  1 files changed, 38 insertions(+), 23 deletions(-)
> 
> diff --git a/data/virt-viewer.nsis.in b/data/virt-viewer.nsis.in
> index a96d958..2ba4526 100644
> --- a/data/virt-viewer.nsis.in
> +++ b/data/virt-viewer.nsis.in
> @@ -7,28 +7,42 @@
>  # which will generate the output file 'virt-viewer- at VERSION@.exe' which is a Windows
>  # installer containing your program.
>  
> -Name "virt-viewer"
> +Name "VirtViewer @VERSION@"
>  OutFile "virt-viewer- at VERSION@.exe"
> -InstallDir "c:\virt-viewer"
> -InstallDirRegKey HKLM SOFTWARE\virt-viewer "Install_Dir"
> +InstallDir "$LOCALAPPDATA\virt-viewer"
> +InstallDirRegKey HKCU "Software\virt-viewer" ""
>  
> +RequestExecutionLevel user
> +SetCompressor bzip2
>  ShowInstDetails hide
>  ShowUninstDetails hide
> -
> -SetCompressor bzip2
> -
>  XPStyle on
>  
> -# Page components
>  Page directory
>  Page instfiles
>  
> -ComponentText "Select which optional components you want to install."
> -
> -DirText "Please select the installation folder."
> -
> -Section "virt-viewer"
> +!define REG_UNINSTALL "Software\Microsoft\Windows\CurrentVersion\Uninstall\virt-viewer"
> +
> +Function RegisterApplication
> +    ;Register uninstaller into Add/Remove panel (for local user only)
> +    WriteRegStr HKCU "${REG_UNINSTALL}" "DisplayName" "VirtViewer @VERSION@"
> +    WriteRegStr HKCU "${REG_UNINSTALL}" "DisplayIcon" "$\"$INSTDIR\bin\virt-viewer.exe$\""
> +    WriteRegStr HKCU "${REG_UNINSTALL}" "Publisher" "virt-manager.org"
> +    WriteRegStr HKCU "${REG_UNINSTALL}" "DisplayVersion" "@VERSION@"
> +    WriteRegDWord HKCU "${REG_UNINSTALL}" "EstimatedSize" 32000 ;KB
> +    WriteRegStr HKCU "${REG_UNINSTALL}" "HelpLink" "http://www.virt-manager.org"
> +    WriteRegStr HKCU "${REG_UNINSTALL}" "URLInfoAbout" "http://www.virt-manager.org"
> +    WriteRegStr HKCU "${REG_UNINSTALL}" "InstallLocation" "$\"$INSTDIR$\""
> +    WriteRegStr HKCU "${REG_UNINSTALL}" "InstallSource" "$\"$EXEDIR$\""
> +    WriteRegDWord HKCU "${REG_UNINSTALL}" "NoModify" 1
> +    WriteRegDWord HKCU "${REG_UNINSTALL}" "NoRepair" 1
> +    WriteRegStr HKCU "${REG_UNINSTALL}" "UninstallString" "$\"$INSTDIR\Uninstall.exe$\""
> +    WriteRegStr HKCU "${REG_UNINSTALL}" "Comments" "Uninstalls VirtViewer."
> +FunctionEnd
> +
> +Section "VirtViewer"
>    SectionIn RO
> +  WriteRegStr HKCU "Software\virt-viewer" "" $INSTDIR
>  
>    SetOutPath "$INSTDIR\bin"
>    File "@prefix@/bin/gst-discoverer-0.10.exe"
> @@ -153,27 +167,27 @@ Section "virt-viewer"
>    nsExec::ExecToLog '$0 /C bin\pango-querymodules.exe > etc\pango\pango.modules'
>    nsExec::ExecToLog 'echo gtk-theme-name = "MS-Windows" > etc\gtk-2.0\gtkrc'
>  
> +  # make virt-viewer the default spice-x client
>    WriteRegStr HKCU "Software\spice-space.org\spicex" "client" "$INSTDIR\bin\remote-viewer.exe --spice-controller"
>  
>  SectionEnd
>  
>  Section "Start Menu Shortcuts"
> -  CreateDirectory "$SMPROGRAMS\virt-viewer"
> -  CreateShortCut "$SMPROGRAMS\virt-viewer\Uninstall virt-viewer.lnk" "$INSTDIR\Uninstall virt-viewer.exe" "" "$INSTDIR\Uninstall virt-viewer.exe" 0
> -#  CreateShortCut "$SMPROGRAMS\virt-viewer\virt-viewer.exe.lnk" "$INSTDIR\bin\virt-viewer.exe" "" "$INSTDIR\bin\virt-viewer.exe" 0
> -SectionEnd
> -
> -Section "Desktop Icons"
> -#  CreateShortCut "$DESKTOP\virt-viewer.exe.lnk" "$INSTDIR\bin\virt-viewer.exe" "" "$INSTDIR\bin\virt-viewer.exe" 0
> +  CreateDirectory "$SMPROGRAMS\VirtViewer"
> +  CreateShortCut "$SMPROGRAMS\VirtViewer\Remote Viewer.lnk" "$INSTDIR\bin\remote-viewer.exe" "" "$INSTDIR\bin\remote-viewer.exe" 0
> +  CreateShortCut "$SMPROGRAMS\VirtViewer\Uninstall.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
>  SectionEnd
>  
>  Section "Uninstall"
> -#  Delete /rebootok "$DESKTOP\virt-viewer.exe.lnk"
> -#  Delete /rebootok "$SMPROGRAMS\virt-viewer\virt-viewer.exe.lnk"
> -  Delete /rebootok "$SMPROGRAMS\virt-viewer\Uninstall virt-viewer.lnk"
> +  Delete /rebootok "$SMPROGRAMS\VirtViewer\Uninstall.lnk"
> +  Delete /rebootok "$SMPROGRAMS\VirtViewer\Remote Viewer.lnk"
>    RMDir "$SMPROGRAMS\virt-viewer"
>  
>    DeleteRegKey HKCU "Software\spice-space.org\spicex\client"
> +  DeleteRegKey /ifempty HKCU "Software\spice-space.org\spicex"
> +  DeleteRegKey /ifempty HKCU "Software\spice-space.org"
> +  DeleteRegKey HKCU "Software\virt-viewer"
> +  DeleteRegKey HKCU "${REG_UNINSTALL}"
>  
>    RMDir /r "$INSTDIR\lib\pango"
>  
> @@ -267,5 +281,6 @@ Section "Uninstall"
>  SectionEnd
>  
>  Section -post
> -  WriteUninstaller "$INSTDIR\Uninstall virt-viewer.exe"
> +  WriteUninstaller "$INSTDIR\Uninstall.exe"
> +  Call RegisterApplication
>  SectionEnd

ACK, I don't know anything about NSIS installers, but I assume you
tested this


Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the virt-tools-list mailing list