More macos fixes
This commit is contained in:
676
dist/windows/Capabilities.nsh
vendored
Normal file
676
dist/windows/Capabilities.nsh
vendored
Normal file
@@ -0,0 +1,676 @@
|
||||
/*
|
||||
_____________________________________________________________________________
|
||||
|
||||
Application Capabilities (Default Programs)
|
||||
_____________________________________________________________________________
|
||||
|
||||
By Joel Spadin
|
||||
Loosely based on code taken from http://nsis.sourceforge.net/File_Association
|
||||
|
||||
These functions register an application with Windows Vista's and Windows 7's
|
||||
Default Programs window.
|
||||
|
||||
Usage:
|
||||
|
||||
!include "Capabilities.nsh"
|
||||
!define CAPABILITIES_NAME "[program name]"
|
||||
!define CAPABILITIES_DESCRIPTION "[description]"
|
||||
!define CAPABILITIES_PROGID "[progid]"
|
||||
!define CAPABILITIES_PATH "[path]"
|
||||
...
|
||||
|
||||
During install, call ${RegisterCapabilities}, then use the other register
|
||||
macros to create file type, MIME, and protocol associations.
|
||||
|
||||
During uninstall, call ${UnRegisterCapabilities}
|
||||
|
||||
_______________________________________________________________________________
|
||||
|
||||
More information about Default Programs and Client Types can be found here:
|
||||
http://msdn.microsoft.com/en-us/library/cc144154(VS.85).aspx
|
||||
http://msdn.microsoft.com/en-us/library/cc144109(v=VS.85).aspx
|
||||
|
||||
Defines: All defines not marked [optional] are required.
|
||||
|
||||
CAPABILITIES_NAME
|
||||
The canonical name of the program.
|
||||
|
||||
CAPABILITIES_LOCAL_NAME [optional]
|
||||
The localized name of the program as it appears in Default Programs.
|
||||
This should be in the format "@FilePath,-StringID" where FilePath is the
|
||||
path to a .dll or .exe file and StringID is the ID of a resource contained
|
||||
in the file.
|
||||
|
||||
CAPABILITIES_DESCRIPTION
|
||||
The localized description shown in Default Programs. This can be either a
|
||||
string or in the same format as CAPABILITIES_LOCAL_NAME
|
||||
|
||||
CAPABILITIES_PROGID
|
||||
An identifier used in file associations. Usually, this is the name of the
|
||||
program. This should not have any spaces in it.
|
||||
|
||||
CAPABILITIES_PATH
|
||||
The location where capabilities info is stored in the registry.
|
||||
The "Capabilities" key will automatically be added. If the application is
|
||||
a client of some sort, (browser, email, media player, etc.) use
|
||||
"Software\Clients\[ClientType]\[ProgramName]". Otherwise, use
|
||||
"Software\[CompanyName]\[ProgramName]" or just "Software\[ProgramName]".
|
||||
|
||||
CAPABILITIES_ICON [optional]
|
||||
The icon shown in Default Programs. This should be in the format
|
||||
"FilePath,IconIndex" where FilePath is the path to a file containing the
|
||||
icon. If IconIndex is positive, the number is used as the index of the
|
||||
zero-based array of icons stored in the file. If IconIndex is negative,
|
||||
the absolute value is used as a resource ID.
|
||||
|
||||
CAPABILITIES_REINSTALL [optional]
|
||||
The command executed when a user uses Set Program Access and Computer
|
||||
Defaults to select this application as the default for its client type.
|
||||
This command should launch a program that associates the application with
|
||||
all the file and protocol types it can handle.
|
||||
|
||||
CAPABILITIES_HIDE_ICONS [optional]
|
||||
The command executed when a user uses Set Program Access and Computer
|
||||
Defaults to disable access to this application. This command should launch
|
||||
a program that hides all shortcuts and access points to this application.
|
||||
It should also prevent the application from being run automatically and
|
||||
update the IconsVisible registry value to 0.
|
||||
|
||||
CAPABILITIES_SHOW_ICONS [optional]
|
||||
The command executed when a user uses Set Program Access and Computer
|
||||
Defaults to enable access to this application. This command should launch
|
||||
a program that restores shortcuts and access points to the application,
|
||||
allows the program to run, and updates the IconsVisible registry value to 1.
|
||||
|
||||
|
||||
Macros:
|
||||
|
||||
${RegisterCapabilities}
|
||||
Registers the program with Default Programs. Call this once on install
|
||||
before using any other functions.
|
||||
|
||||
${UnRegisterCapabilities}
|
||||
Un-registers the program and all its associations. Call this once on
|
||||
uninstall to clean up all installed registry values.
|
||||
|
||||
${RegisterFileType} "[extension]" "[executable]" "[icon]" "[description]"
|
||||
Registers a file type with the program
|
||||
extension: The file extension to register (ex: .txt)
|
||||
executable: The executable that opens the file type
|
||||
icon: The icon shown for the file type
|
||||
description: Description for the file type shown in Explorer
|
||||
|
||||
${RegisterMediaType} "[extension]" "[executable]" "[icon]" "[description]"
|
||||
Registers a media file type with the program (has a "Play" command)
|
||||
(arguments are same as RegisterFileType)
|
||||
|
||||
${RegisterMimeType} "[mime type]" "[shortname]" "[clsid]"
|
||||
Registers a mime type with the program
|
||||
mime type: The MIME type to register (ex: audio/mp3)
|
||||
shortname: A short identifier for the type (ex: mp3)
|
||||
clsid: The CLSID of the program to handle files of this type
|
||||
|
||||
${RegisterProtocol} "[protocol]" "[executable]" "[icon]" "[description]"
|
||||
Registers a URL protocol with the program
|
||||
protocol: The protocol to register (ex: http)
|
||||
(other arguments are same as RegisterFileType)
|
||||
|
||||
${UnRegisterFileType} "[extension]"
|
||||
Un-registers a previously registered file type
|
||||
extension: The file extension to un-register
|
||||
|
||||
${UnRegisterMimeType} "[mime type]"
|
||||
Un-registers a previously registered MEME type
|
||||
mime type: The MIME type to un-register
|
||||
|
||||
${UnRegisterProtocol} "[protocol]"
|
||||
Un-registers a previously registered URL protocol
|
||||
protocol: The URL protocol to un-register
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
!ifndef Capabilities_INCLUDED
|
||||
!define Capabilities_INCLUDED
|
||||
|
||||
!include "Util.nsh"
|
||||
!include "StrFunc.nsh"
|
||||
|
||||
${StrCase}
|
||||
|
||||
!verbose push
|
||||
!verbose 3
|
||||
!ifndef _Capabilities_VERBOSE
|
||||
!define _Capabilities_VERBOSE 3
|
||||
!endif
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
!define Capabilities_VERBOSE `!insertmacro Capabilities_VERBOSE`
|
||||
!verbose pop
|
||||
|
||||
!macro Capabilities_VERBOSE _VERBOSE
|
||||
!verbose push
|
||||
!verbose 3
|
||||
!undef _Capabilities_VERBOSE
|
||||
!define _Capabilities_VERBOSE ${_VERBOSE}
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
!macro RegisterCapabilitiesCall
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
${CallArtificialFunction} RegisterCapabilities_
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
!macro UnRegisterCapabilitiesCall
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
${CallArtificialFunction} UnRegisterCapabilities_
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
!macro RegisterFileTypeCall _EXTENSION _EXECUTABLE _ICON _DESCRIPTION
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
Push `${_DESCRIPTION}`
|
||||
Push `${_ICON}`
|
||||
Push `${_EXECUTABLE}`
|
||||
Push `${_EXTENSION}`
|
||||
${CallArtificialFunction} RegisterFileType_
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
!macro RegisterMediaTypeCall _EXTENSION _EXECUTABLE _ICON _DESCRIPTION
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
Push `${_DESCRIPTION}`
|
||||
Push `${_ICON}`
|
||||
Push `${_EXECUTABLE}`
|
||||
Push `${_EXTENSION}`
|
||||
${CallArtificialFunction} RegisterMediaType_
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
!macro RegisterMimeTypeCall _MIMETYPE _SHORTNAME _CLSID
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
Push `${_CLSID}`
|
||||
Push `${_SHORTNAME}`
|
||||
Push `${_MIMETYPE}`
|
||||
${CallArtificialFunction} RegisterMimeType_
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
!macro RegisterProtocolCall _PROTOCOL _EXECUTABLE _ICON _DESCRIPTION
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
Push `${_DESCRIPTION}`
|
||||
Push `${_ICON}`
|
||||
Push `${_EXECUTABLE}`
|
||||
Push `${_PROTOCOL}`
|
||||
${CallArtificialFunction} RegisterProtocol_
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
!macro UnRegisterFileTypeCall _EXTENSION
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
Push `${_EXTENSION}`
|
||||
${CallArtificialFunction} UnRegisterFileType_
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
!macro UnRegisterMimeTypeCall _MIMETYPE
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
Push `${_MIMETYPE}`
|
||||
${CallArtificialFunction} UnRegisterMimeType_
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
!macro UnRegisterProtocolCall _PROTOCOL
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
Push `${_MIMETYPE}`
|
||||
${CallArtificialFunction} UnRegisterProtocol_
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
|
||||
|
||||
|
||||
!define RegisterCapabilities `!insertmacro RegisterCapabilitiesCall`
|
||||
!define un.RegisterCapabilities `!insertmacro RegisterCapabilitiesCall`
|
||||
|
||||
!macro RegisterCapabilities
|
||||
!macroend
|
||||
|
||||
!macro un.RegisterCapabilities
|
||||
!macroend
|
||||
|
||||
!macro RegisterCapabilities_
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
Push $0
|
||||
|
||||
!ifndef CAPABILITIES_PATH
|
||||
!error "CAPABILITIES_PATH not defined"
|
||||
!endif
|
||||
!ifndef CAPABILITIES_NAME
|
||||
!error "CAPABILITIES_NAME not defined"
|
||||
!endif
|
||||
!ifndef CAPABILITIES_PROGID
|
||||
!error "CAPABILITIES_PROGID not defined"
|
||||
!endif
|
||||
!ifndef CAPABILITIES_DESCRIPTION
|
||||
!error "CAPABILITIES_DESCRIPTION not defined"
|
||||
!endif
|
||||
|
||||
StrCpy $0 "${CAPABILITIES_PATH}\Capabilities"
|
||||
; add the application to RegisteredApplications
|
||||
WriteRegStr HKLM "Software\RegisteredApplications" "${CAPABILITIES_NAME}" "$0"
|
||||
|
||||
; write application info
|
||||
WriteRegStr HKLM "${CAPABILITIES_PATH}" "" "${CAPABILITIES_NAME}"
|
||||
|
||||
!ifdef CAPABILITIES_LOCAL_NAME
|
||||
WriteRegStr HKLM "${CAPABILITIES_PATH}" "LocalizedString" "${CAPABILITIES_LOCAL_NAME}"
|
||||
!endif
|
||||
!ifdef CAPABILITIES_ICON
|
||||
WriteRegStr HKLM "${CAPABILITIES_PATH}\DefaultIcon" "" "${CAPABILITIES_ICON}"
|
||||
!endif
|
||||
|
||||
; write installinfo if defined
|
||||
!ifdef CAPABILITIES_REINSTALL
|
||||
WriteRegStr HKLM "${CAPABILITIES_PATH}\InstallInfo" "ReinstallCommand" "${CAPABILITIES_REINSTALL}"
|
||||
!endif
|
||||
!ifdef CAPABILITIES_HIDE_ICONS
|
||||
WriteRegStr HKLM "${CAPABILITIES_PATH}\InstallInfo" "HideIconsCommand" "${CAPABILITIES_HIDE_ICONS}"
|
||||
WriteRegDWORD HKLM "${CAPABILITIES_PATH}\InstallInfo" "IconsVisible" 0x1
|
||||
!endif
|
||||
!ifdef CAPABILITIES_SHOW_ICONS
|
||||
WriteRegStr HKLM "${CAPABILITIES_PATH}\InstallInfo" "ShowIconsCommand" "${CAPABILITIES_SHOW_ICONS}"
|
||||
WriteRegDWORD HKLM "${CAPABILITIES_PATH}\InstallInfo" "IconsVisible" 0x1
|
||||
!endif
|
||||
|
||||
; write application capabilities info
|
||||
!ifdef CAPABILITIES_LOCAL_NAME
|
||||
WriteRegStr HKLM "$0" "ApplicationName" "${CAPABILITIES_LOCAL_NAME}"
|
||||
!else
|
||||
WriteRegStr HKLM "$0" "ApplicationName" "${CAPABILITIES_NAME}"
|
||||
!endif
|
||||
WriteRegStr HKLM "$0" "ApplicationDescription" "${CAPABILITIES_DESCRIPTION}"
|
||||
|
||||
Pop $0
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
|
||||
|
||||
!define UnRegisterCapabilities `!insertmacro UnRegisterCapabilitiesCall`
|
||||
!define un.UnRegisterCapabilities `!insertmacro UnRegisterCapabilitiesCall`
|
||||
|
||||
!macro UnRegisterCapabilities
|
||||
!macroend
|
||||
|
||||
!macro un.UnRegisterCapabilities
|
||||
!macroend
|
||||
|
||||
!macro UnRegisterCapabilities_
|
||||
!define MacroID ${__LINE__}
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
|
||||
Push $0
|
||||
Push $1
|
||||
|
||||
; remove all file associations
|
||||
FileTypeLoop_${MacroID}:
|
||||
EnumRegValue $0 HKLM "${CAPABILITIES_PATH}\Capabilities\FileAssociations" 0
|
||||
StrCmp $0 "" FileTypeDone_${MacroID}
|
||||
|
||||
ReadRegStr $1 HKLM "${CAPABILITIES_PATH}\Capabilities\FileAssociations" "$0"
|
||||
DeleteRegKey HKCR $1
|
||||
DeleteRegValue HKLM "${CAPABILITIES_PATH}\Capabilities\FileAssociations" "$0"
|
||||
|
||||
Goto FileTypeLoop_${MacroID}
|
||||
FileTypeDone_${MacroID}:
|
||||
|
||||
; remove all MIME associations
|
||||
MimeTypeLoop_${MacroID}:
|
||||
EnumRegValue $0 HKLM "${CAPABILITIES_PATH}\Capabilities\MimeAssociations" 0
|
||||
StrCmp $0 "" MimeTypeDone_${MacroID}
|
||||
|
||||
ReadRegStr $1 HKLM "${CAPABILITIES_PATH}\Capabilities\MimeAssociations" "$0"
|
||||
DeleteRegKey HKCR "$1"
|
||||
DeleteRegValue HKLM "${CAPABILITIES_PATH}\Capabilities\MimeAssociations" "$0"
|
||||
|
||||
Goto MimeTypeLoop_${MacroID}
|
||||
MimeTypeDone_${MacroID}:
|
||||
|
||||
; remove all protocol associations
|
||||
ProtocolLoop_${MacroID}:
|
||||
EnumRegValue $0 HKLM "${CAPABILITIES_PATH}\Capabilities\UrlAssociations" 0
|
||||
StrCmp $0 "" ProtocolDone_${MacroID}
|
||||
|
||||
ReadRegStr $1 HKLM "${CAPABILITIES_PATH}\Capabilities\UrlAssociations" "$0"
|
||||
DeleteRegKey HKCR "$1"
|
||||
DeleteRegValue HKLM "${CAPABILITIES_PATH}\Capabilities\UrlAssociations" "$0"
|
||||
|
||||
Goto ProtocolLoop_${MacroID}
|
||||
ProtocolDone_${MacroID}:
|
||||
|
||||
|
||||
; remove capabilities keys
|
||||
DeleteRegValue HKLM "Software\RegisteredApplications" "${CAPABILITIES_NAME}"
|
||||
DeleteRegKey HKLM ${CAPABILITIES_PATH}
|
||||
|
||||
Pop $1
|
||||
Pop $0
|
||||
!verbose pop
|
||||
!undef MacroID
|
||||
!macroend
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
!define RegisterFileType `!insertmacro RegisterFileTypeCall`
|
||||
!define un.RegisterFileType `!insertmacro RegisterFileTypeCall`
|
||||
|
||||
!macro RegisterFileType
|
||||
!macroend
|
||||
|
||||
!macro un.RegisterFileType
|
||||
!macroend
|
||||
|
||||
|
||||
!macro RegisterFileType_
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
|
||||
Exch $R3 ;ext
|
||||
Exch
|
||||
Exch $R2 ;exe
|
||||
Exch 2
|
||||
Exch $R1 ;icon
|
||||
Exch
|
||||
Exch 3
|
||||
Exch $R0 ;desc
|
||||
Push $0
|
||||
|
||||
; create an association name
|
||||
; ex: .mp3 becomes ProgID.AssocFile.MP3
|
||||
${StrCase} $0 "$R3" "U"
|
||||
StrCpy $0 "${CAPABILITIES_PROGID}.AssocFile$0"
|
||||
|
||||
; link capabilities to association in classes root
|
||||
WriteRegStr HKLM "${CAPABILITIES_PATH}\Capabilities\FileAssociations" "$R3" "$0"
|
||||
|
||||
; write file association in classes root
|
||||
WriteRegStr HKCR "$0" "" "$R0"
|
||||
WriteRegStr HKCR "$0\DefaultIcon" "" "$R1"
|
||||
WriteRegStr HKCR "$0\shell" "" "Open"
|
||||
WriteRegStr HKCR "$0\shell\open" "" "&Open"
|
||||
WriteRegStr HKCR "$0\shell\open\command" "" '"$R2" "%1"'
|
||||
|
||||
Pop $0
|
||||
Pop $R0
|
||||
Pop $R1
|
||||
Pop $R2
|
||||
Pop $R3
|
||||
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
|
||||
|
||||
|
||||
!define RegisterMediaType `!insertmacro RegisterMediaTypeCall`
|
||||
!define un.RegisterMediaType `!insertmacro RegisterMediaTypeCall`
|
||||
|
||||
!macro RegisterMediaType
|
||||
!macroend
|
||||
|
||||
!macro un.RegisterMediaType
|
||||
!macroend
|
||||
|
||||
|
||||
!macro RegisterMediaType_
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
|
||||
Exch $R3 ;ext
|
||||
Exch
|
||||
Exch $R2 ;exe
|
||||
Exch 2
|
||||
Exch $R1 ;icon
|
||||
Exch
|
||||
Exch 3
|
||||
Exch $R0 ;desc
|
||||
Push $0
|
||||
|
||||
|
||||
; create an association name
|
||||
; ex: .mp3 becomes ProgID.AssocFile.MP3
|
||||
${StrCase} $0 "$R3" "U"
|
||||
StrCpy $0 "${CAPABILITIES_PROGID}.AssocFile$0"
|
||||
|
||||
; link capabilities to association in classes root
|
||||
WriteRegStr HKLM "${CAPABILITIES_PATH}\Capabilities\FileAssociations" "$R3" "$0"
|
||||
|
||||
; write file association in classes root
|
||||
WriteRegStr HKCR "$0" "" "$R0"
|
||||
WriteRegStr HKCR "$0\DefaultIcon" "" "$R1"
|
||||
WriteRegStr HKCR "$0\shell" "" "Play"
|
||||
WriteRegStr HKCR "$0\shell\open" "" "&Open"
|
||||
WriteRegStr HKCR "$0\shell\open\command" "" '"$R2" "%1"'
|
||||
WriteRegStr HKCR "$0\shell\play" "" "&Play"
|
||||
WriteRegStr HKCR "$0\shell\play\command" "" '"$R2" "%L"'
|
||||
|
||||
Pop $0
|
||||
Pop $R0
|
||||
Pop $R1
|
||||
Pop $R2
|
||||
Pop $R3
|
||||
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
|
||||
|
||||
|
||||
!define RegisterMimeType `!insertmacro RegisterMimeTypeCall`
|
||||
!define un.RegisterMimeType `!insertmacro RegisterMimeTypeCall`
|
||||
|
||||
!macro RegisterMimeType
|
||||
!macroend
|
||||
|
||||
!macro un.RegisterMimeType
|
||||
!macroend
|
||||
|
||||
|
||||
!macro RegisterMimeType_
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
|
||||
Exch $R2 ;mime
|
||||
Exch
|
||||
Exch $R1 ;shortname
|
||||
Exch
|
||||
Exch 2
|
||||
Exch $R0 ;clsid
|
||||
|
||||
Push $0
|
||||
|
||||
; create an association name
|
||||
; ex: audio/mp3 becomes ProgID.AssocMIME.MP3
|
||||
${StrCase} $0 "$R1" "U"
|
||||
StrCpy $0 "${CAPABILITIES_PROGID}.AssocMIME.$0"
|
||||
|
||||
; link capabilities to association in classes root
|
||||
WriteRegStr HKLM "${CAPABILITIES_PATH}\Capabilities\MimeAssociations" "$R2" "$0"
|
||||
|
||||
; write file association in classes root
|
||||
WriteRegStr HKCR "$0\CLSID" "" "$R0"
|
||||
|
||||
Pop $0
|
||||
Pop $R0
|
||||
Pop $R1
|
||||
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
|
||||
|
||||
!define RegisterProtocol `!insertmacro RegisterProtocolCall`
|
||||
!define un.RegisterProtocol `!insertmacro RegisterProtocolCall`
|
||||
|
||||
!macro RegisterProtocol
|
||||
!macroend
|
||||
|
||||
!macro un.RegisterProtocol
|
||||
!macroend
|
||||
|
||||
|
||||
!macro RegisterProtocol_
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
|
||||
Exch $R3 ;protocol
|
||||
Exch
|
||||
Exch $R2 ;exe
|
||||
Exch 2
|
||||
Exch $R1 ;icon
|
||||
Exch
|
||||
Exch 3
|
||||
Exch $R0 ;desc
|
||||
Push $0
|
||||
|
||||
|
||||
; create an association name
|
||||
; ex: http becomes ProgID.AssocProtocol.HTTP
|
||||
${StrCase} $0 "$R3" "U"
|
||||
StrCpy $0 "${CAPABILITIES_PROGID}.AssocProtocol.$0"
|
||||
|
||||
; link capabilities to association in classes root
|
||||
WriteRegStr HKLM "${CAPABILITIES_PATH}\Capabilities\UrlAssociations" "$R3" "$0"
|
||||
|
||||
; write file association in classes root
|
||||
WriteRegStr HKCR "$0" "" "$R0"
|
||||
WriteRegStr HKCR "$0\DefaultIcon" "" "$R1"
|
||||
WriteRegStr HKCR "$0\shell\open" "" "&Open"
|
||||
WriteRegStr HKCR "$0\shell\open\command" "" '"$R2" "%1"'
|
||||
|
||||
Pop $0
|
||||
Pop $R0
|
||||
Pop $R1
|
||||
Pop $R2
|
||||
Pop $R3
|
||||
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
|
||||
|
||||
|
||||
!define UnRegisterFileType `!insertmacro UnRegisterFileTypeCall`
|
||||
!define un.UnRegisterFileType `!insertmacro UnRegisterFileTypeCall`
|
||||
|
||||
!macro UnRegisterFileType
|
||||
!macroend
|
||||
|
||||
!macro un.UnRegisterFileType
|
||||
!macroend
|
||||
|
||||
!macro UnRegisterFileType_
|
||||
!define MacroID ${__LINE__}
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
|
||||
Exch $R0 ;ext
|
||||
Push $0
|
||||
|
||||
ReadRegStr $0 HKLM "${CAPABILITIES_PATH}\Capabilities\FileAssociations" "$R0"
|
||||
StrCmp $0 "" skip_${MacroID}
|
||||
|
||||
DeleteRegKey HKCR "$0"
|
||||
DeleteRegValue HKLM "${CAPABILITIES_PATH}\Capabilities\FileAssociations" "$R0"
|
||||
skip_${MacroID}:
|
||||
|
||||
Pop $0
|
||||
Pop $R0
|
||||
!verbose pop
|
||||
!undef MacroID
|
||||
!macroend
|
||||
|
||||
|
||||
|
||||
!define UnRegisterMimeType `!insertmacro UnRegisterMimeTypeCall`
|
||||
!define un.UnRegisterMimeType `!insertmacro UnRegisterMimeTypeCall`
|
||||
|
||||
!macro UnRegisterMimeType
|
||||
!macroend
|
||||
|
||||
!macro un.UnRegisterMimeType
|
||||
!macroend
|
||||
|
||||
!macro UnRegisterMimeType_
|
||||
!define MacroID ${__LINE__}
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
|
||||
Exch $R0 ;mime
|
||||
Push $0
|
||||
|
||||
ReadRegStr $0 HKLM "${CAPABILITIES_PATH}\Capabilities\MimeAssociations" "$R0"
|
||||
StrCmp $0 "" skip_${MacroID}
|
||||
|
||||
DeleteRegKey HKCR "$0"
|
||||
DeleteRegValue HKLM "${CAPABILITIES_PATH}\Capabilities\MimeAssociations" "$R0"
|
||||
skip_${MacroID}:
|
||||
|
||||
Pop $0
|
||||
Pop $R0
|
||||
!verbose pop
|
||||
!undef MacroID
|
||||
!macroend
|
||||
|
||||
|
||||
|
||||
!define UnRegisterProtocol `!insertmacro UnRegisterProtocolCall`
|
||||
!define un.UnRegisterProtocol `!insertmacro UnRegisterProtocolCall`
|
||||
|
||||
!macro UnRegisterProtocol
|
||||
!macroend
|
||||
|
||||
!macro un.UnRegisterProtocol
|
||||
!macroend
|
||||
|
||||
!macro UnRegisterProtocol_
|
||||
!define MacroID ${__LINE__}
|
||||
!verbose push
|
||||
!verbose ${_Capabilities_VERBOSE}
|
||||
|
||||
Exch $R0 ;protocol
|
||||
Push $0
|
||||
|
||||
ReadRegStr $0 HKLM "${CAPABILITIES_PATH}\Capabilities\UrlAssociations" "$R0"
|
||||
StrCmp $0 "" skip_${MacroID}
|
||||
|
||||
DeleteRegKey HKCR "$0"
|
||||
DeleteRegValue HKLM "${CAPABILITIES_PATH}\Capabilities\UrlAssociations" "$R0"
|
||||
skip_${MacroID}:
|
||||
|
||||
Pop $0
|
||||
Pop $R0
|
||||
!verbose pop
|
||||
!undef MacroID
|
||||
!macroend
|
||||
|
||||
|
||||
|
||||
|
||||
!endif
|
||||
190
dist/windows/FileAssociation.nsh
vendored
Normal file
190
dist/windows/FileAssociation.nsh
vendored
Normal file
@@ -0,0 +1,190 @@
|
||||
/*
|
||||
_____________________________________________________________________________
|
||||
|
||||
File Association
|
||||
_____________________________________________________________________________
|
||||
|
||||
Based on code taken from http://nsis.sourceforge.net/File_Association
|
||||
|
||||
Usage in script:
|
||||
1. !include "FileAssociation.nsh"
|
||||
2. [Section|Function]
|
||||
${FileAssociationFunction} "Param1" "Param2" "..." $var
|
||||
[SectionEnd|FunctionEnd]
|
||||
|
||||
FileAssociationFunction=[RegisterExtension|UnRegisterExtension]
|
||||
|
||||
_____________________________________________________________________________
|
||||
|
||||
${RegisterExtension} "[executable]" "[extension]" "[description]"
|
||||
|
||||
"[executable]" ; executable which opens the file format
|
||||
;
|
||||
"[extension]" ; extension, which represents the file format to open
|
||||
;
|
||||
"[description]" ; description for the extension. This will be display in Windows Explorer.
|
||||
;
|
||||
|
||||
|
||||
${UnRegisterExtension} "[extension]" "[description]"
|
||||
|
||||
"[extension]" ; extension, which represents the file format to open
|
||||
;
|
||||
"[description]" ; description for the extension. This will be display in Windows Explorer.
|
||||
;
|
||||
|
||||
_____________________________________________________________________________
|
||||
|
||||
Macros
|
||||
_____________________________________________________________________________
|
||||
|
||||
Change log window verbosity (default: 3=no script)
|
||||
|
||||
Example:
|
||||
!include "FileAssociation.nsh"
|
||||
!insertmacro RegisterExtension
|
||||
${FileAssociation_VERBOSE} 4 # all verbosity
|
||||
!insertmacro UnRegisterExtension
|
||||
${FileAssociation_VERBOSE} 3 # no script
|
||||
*/
|
||||
|
||||
|
||||
!ifndef FileAssociation_INCLUDED
|
||||
!define FileAssociation_INCLUDED
|
||||
|
||||
!include Util.nsh
|
||||
|
||||
!verbose push
|
||||
!verbose 3
|
||||
!ifndef _FileAssociation_VERBOSE
|
||||
!define _FileAssociation_VERBOSE 3
|
||||
!endif
|
||||
!verbose ${_FileAssociation_VERBOSE}
|
||||
!define FileAssociation_VERBOSE `!insertmacro FileAssociation_VERBOSE`
|
||||
!verbose pop
|
||||
|
||||
!macro FileAssociation_VERBOSE _VERBOSE
|
||||
!verbose push
|
||||
!verbose 3
|
||||
!undef _FileAssociation_VERBOSE
|
||||
!define _FileAssociation_VERBOSE ${_VERBOSE}
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
|
||||
|
||||
!macro RegisterExtensionCall _EXECUTABLE _EXTENSION _DESCRIPTION
|
||||
!verbose push
|
||||
!verbose ${_FileAssociation_VERBOSE}
|
||||
Push `${_DESCRIPTION}`
|
||||
Push `${_EXTENSION}`
|
||||
Push `${_EXECUTABLE}`
|
||||
${CallArtificialFunction} RegisterExtension_
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
!macro UnRegisterExtensionCall _EXTENSION _DESCRIPTION
|
||||
!verbose push
|
||||
!verbose ${_FileAssociation_VERBOSE}
|
||||
Push `${_EXTENSION}`
|
||||
Push `${_DESCRIPTION}`
|
||||
${CallArtificialFunction} UnRegisterExtension_
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
|
||||
|
||||
!define RegisterExtension `!insertmacro RegisterExtensionCall`
|
||||
!define un.RegisterExtension `!insertmacro RegisterExtensionCall`
|
||||
|
||||
!macro RegisterExtension
|
||||
!macroend
|
||||
|
||||
!macro un.RegisterExtension
|
||||
!macroend
|
||||
|
||||
!macro RegisterExtension_
|
||||
!verbose push
|
||||
!verbose ${_FileAssociation_VERBOSE}
|
||||
|
||||
Exch $R2 ;exe
|
||||
Exch
|
||||
Exch $R1 ;ext
|
||||
Exch
|
||||
Exch 2
|
||||
Exch $R0 ;desc
|
||||
Exch 2
|
||||
Push $0
|
||||
Push $1
|
||||
|
||||
ReadRegStr $1 HKCR $R1 "" ; read current file association
|
||||
StrCmp "$1" "" NoBackup ; is it empty
|
||||
StrCmp "$1" "$R0" NoBackup ; is it our own
|
||||
WriteRegStr HKCR $R1 "backup_val" "$1" ; backup current value
|
||||
NoBackup:
|
||||
WriteRegStr HKCR $R1 "" "$R0" ; set our file association
|
||||
|
||||
ReadRegStr $0 HKCR $R0 ""
|
||||
StrCmp $0 "" 0 Skip
|
||||
WriteRegStr HKCR "$R0" "" "$R0"
|
||||
WriteRegStr HKCR "$R0\shell" "" "open"
|
||||
WriteRegStr HKCR "$R0\DefaultIcon" "" "$R2,0"
|
||||
Skip:
|
||||
WriteRegStr HKCR "$R0\shell\open\command" "" '"$R2" "%1"'
|
||||
WriteRegStr HKCR "$R0\shell\edit" "" "Edit $R0"
|
||||
WriteRegStr HKCR "$R0\shell\edit\command" "" '"$R2" "%1"'
|
||||
|
||||
Pop $1
|
||||
Pop $0
|
||||
Pop $R2
|
||||
Pop $R1
|
||||
Pop $R0
|
||||
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
|
||||
|
||||
!define UnRegisterExtension `!insertmacro UnRegisterExtensionCall`
|
||||
!define un.UnRegisterExtension `!insertmacro UnRegisterExtensionCall`
|
||||
|
||||
!macro UnRegisterExtension
|
||||
!macroend
|
||||
|
||||
!macro un.UnRegisterExtension
|
||||
!macroend
|
||||
|
||||
!macro UnRegisterExtension_
|
||||
!verbose push
|
||||
!verbose ${_FileAssociation_VERBOSE}
|
||||
|
||||
Exch $R1 ;desc
|
||||
Exch
|
||||
Exch $R0 ;ext
|
||||
Exch
|
||||
Push $0
|
||||
Push $1
|
||||
|
||||
ReadRegStr $1 HKCR $R0 ""
|
||||
StrCmp $1 $R1 0 NoOwn ; only do this if we own it
|
||||
ReadRegStr $1 HKCR $R0 "backup_val"
|
||||
StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key
|
||||
DeleteRegKey HKCR $R0
|
||||
Goto NoOwn
|
||||
|
||||
Restore:
|
||||
WriteRegStr HKCR $R0 "" $1
|
||||
DeleteRegValue HKCR $R0 "backup_val"
|
||||
DeleteRegKey HKCR $R1 ;Delete key with association name settings
|
||||
|
||||
NoOwn:
|
||||
|
||||
Pop $1
|
||||
Pop $0
|
||||
Pop $R1
|
||||
Pop $R0
|
||||
|
||||
!verbose pop
|
||||
!macroend
|
||||
|
||||
!endif # !FileAssociation_INCLUDED
|
||||
573
dist/windows/strawberry.nsi
vendored
Normal file
573
dist/windows/strawberry.nsi
vendored
Normal file
@@ -0,0 +1,573 @@
|
||||
!define PRODUCT_NAME "Strawberry"
|
||||
!define PRODUCT_PUBLISHER "Strawberry"
|
||||
!define PRODUCT_VERSION_MAJOR 0
|
||||
!define PRODUCT_VERSION_MINOR 1
|
||||
!define PRODUCT_DISPLAY_VERSION "0.1.7"
|
||||
!define PRODUCT_DISPLAY_VERSION_SHORT "0.1.7"
|
||||
!define PRODUCT_WEB_SITE "http://www.strawbs.org/"
|
||||
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
|
||||
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
|
||||
!define PRODUCT_INSTALL_DIR "$PROGRAMFILES\Strawberry Music Player"
|
||||
|
||||
; Set Application Capabilities info
|
||||
!define CAPABILITIES_NAME "Strawberry Music Player"
|
||||
!define CAPABILITIES_LOCAL_NAME "Strawberry"
|
||||
!define CAPABILITIES_PROGID "Strawberry Music Player"
|
||||
!define CAPABILITIES_PATH "Software\Clients\Media\Strawberry"
|
||||
!define CAPABILITIES_DESCRIPTION "Strawberry Music Player"
|
||||
!define CAPABILITIES_ICON "$INSTDIR\strawberry.ico"
|
||||
!define CAPABILITIES_REINSTALL "Command to reinstall"
|
||||
!define CAPABILITIES_HIDE_ICONS "Command to hide icons"
|
||||
!define CAPABILITIES_SHOW_ICONS "Command to show icons"
|
||||
|
||||
SetCompressor /SOLID lzma
|
||||
!addplugindir nsisplugins
|
||||
!include "MUI2.nsh"
|
||||
!include "FileAssociation.nsh"
|
||||
!include "Capabilities.nsh"
|
||||
|
||||
!define MUI_ICON "strawberry.ico"
|
||||
|
||||
!define MUI_COMPONENTSPAGE_SMALLDESC
|
||||
;!define MUI_FINISHPAGE_RUN
|
||||
;!define MUI_FINISHPAGE_RUN_TEXT "Run Strawberry"
|
||||
;!define MUI_FINISHPAGE_RUN_FUNCTION "RunStrawberry"
|
||||
|
||||
; Installer pages
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
|
||||
; Uninstaller pages
|
||||
!insertmacro MUI_UNPAGE_CONFIRM
|
||||
!insertmacro MUI_UNPAGE_INSTFILES
|
||||
!insertmacro MUI_UNPAGE_FINISH
|
||||
|
||||
!insertmacro MUI_LANGUAGE "English" ;first language is the default language
|
||||
|
||||
Name "${PRODUCT_NAME}"
|
||||
OutFile "${PRODUCT_NAME}Setup-0.1.7.exe"
|
||||
InstallDir "${PRODUCT_INSTALL_DIR}"
|
||||
|
||||
; Get the path where Strawberry was installed previously and set it as default path
|
||||
InstallDirRegKey ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} "UninstallString"
|
||||
|
||||
ShowInstDetails show
|
||||
ShowUnInstDetails show
|
||||
RequestExecutionLevel admin
|
||||
;RequestExecutionLevel user
|
||||
|
||||
; Check for previous installation, and call the uninstaller if any
|
||||
Function CheckPreviousInstall
|
||||
|
||||
ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} "UninstallString"
|
||||
StrCmp $R0 "" done
|
||||
|
||||
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
|
||||
"${PRODUCT_NAME} is already installed. $\n$\nClick `OK` to remove the \
|
||||
previous version or `Cancel` to cancel this upgrade." \
|
||||
IDOK uninst
|
||||
Abort
|
||||
; Run the uninstaller
|
||||
uninst:
|
||||
ClearErrors
|
||||
ExecWait '$R0' ; Do not copy the uninstaller to a temp file
|
||||
|
||||
done:
|
||||
|
||||
FunctionEnd
|
||||
|
||||
Function .onInit
|
||||
|
||||
!insertmacro MUI_LANGDLL_DISPLAY
|
||||
|
||||
Call CheckPreviousInstall
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;!define LVM_GETITEMCOUNT 0x1004
|
||||
!define LVM_GETITEMTEXT 0x102D
|
||||
|
||||
Function DumpLog
|
||||
Exch $5
|
||||
Push $0
|
||||
Push $1
|
||||
Push $2
|
||||
Push $3
|
||||
Push $4
|
||||
Push $6
|
||||
|
||||
FindWindow $0 "#32770" "" $HWNDPARENT
|
||||
GetDlgItem $0 $0 1016
|
||||
StrCmp $0 0 exit
|
||||
FileOpen $5 $5 "w"
|
||||
StrCmp $5 "" exit
|
||||
SendMessage $0 ${LVM_GETITEMCOUNT} 0 0 $6
|
||||
System::Alloc ${NSIS_MAX_STRLEN}
|
||||
Pop $3
|
||||
StrCpy $2 0
|
||||
System::Call "*(i, i, i, i, i, i, i, i, i) i \
|
||||
(0, 0, 0, 0, 0, r3, ${NSIS_MAX_STRLEN}) .r1"
|
||||
loop: StrCmp $2 $6 done
|
||||
System::Call "User32::SendMessageA(i, i, i, i) i \
|
||||
($0, ${LVM_GETITEMTEXT}, $2, r1)"
|
||||
System::Call "*$3(&t${NSIS_MAX_STRLEN} .r4)"
|
||||
FileWrite $5 "$4$\r$\n"
|
||||
IntOp $2 $2 + 1
|
||||
Goto loop
|
||||
done:
|
||||
FileClose $5
|
||||
System::Free $1
|
||||
System::Free $3
|
||||
exit:
|
||||
Pop $6
|
||||
Pop $4
|
||||
Pop $3
|
||||
Pop $2
|
||||
Pop $1
|
||||
Pop $0
|
||||
Exch $5
|
||||
FunctionEnd
|
||||
|
||||
;Function RunStrawberry
|
||||
;ShellExecAsUser::ShellExecAsUser "" "$INSTDIR/strawberry.exe" ""
|
||||
;FunctionEnd
|
||||
|
||||
Section "Delete old files" oldfiles
|
||||
SectionEnd
|
||||
|
||||
Section "Strawberry" Strawberry
|
||||
SetOutPath "$INSTDIR"
|
||||
|
||||
File "strawberry.exe"
|
||||
File "strawberry-tagreader.exe"
|
||||
File "strawberry.ico"
|
||||
|
||||
File "libbz2.dll"
|
||||
File "libcdio-16.dll"
|
||||
File "libchromaprint.dll"
|
||||
File "libcrypto-1_1.dll"
|
||||
File "libfaad-2.dll"
|
||||
File "libffi-6.dll"
|
||||
File "libFLAC-8.dll"
|
||||
File "libfreetype-6.dll"
|
||||
File "libgcc_s_sjlj-1.dll"
|
||||
File "libgio-2.0-0.dll"
|
||||
File "libglib-2.0-0.dll"
|
||||
File "libgmodule-2.0-0.dll"
|
||||
File "libgobject-2.0-0.dll"
|
||||
File "libgstapp-1.0-0.dll"
|
||||
File "libgstaudio-1.0-0.dll"
|
||||
File "libgstbase-1.0-0.dll"
|
||||
File "libgstfft-1.0-0.dll"
|
||||
File "libgstpbutils-1.0-0.dll"
|
||||
File "libgstreamer-1.0-0.dll"
|
||||
File "libgstriff-1.0-0.dll"
|
||||
File "libgstrtp-1.0-0.dll"
|
||||
File "libgstrtsp-1.0-0.dll"
|
||||
File "libgstsdp-1.0-0.dll"
|
||||
File "libgsttag-1.0-0.dll"
|
||||
File "libgstvideo-1.0-0.dll"
|
||||
File "libharfbuzz-0.dll"
|
||||
File "libiconv-2.dll"
|
||||
File "libintl-8.dll"
|
||||
File "libjpeg-9.dll"
|
||||
File "liblastfm5.dll"
|
||||
File "libmp3lame-0.dll"
|
||||
File "libogg-0.dll"
|
||||
File "libopus-0.dll"
|
||||
File "libpcre-1.dll"
|
||||
File "libpcre2-16-0.dll"
|
||||
File "libpng16-16.dll"
|
||||
File "libprotobuf-15.dll"
|
||||
File "libspeex-1.dll"
|
||||
File "libsqlite3-0.dll"
|
||||
File "libssl-1_1.dll"
|
||||
File "libstdc++-6.dll"
|
||||
File "libtag.dll"
|
||||
File "libvorbis-0.dll"
|
||||
File "libvorbisenc-2.dll"
|
||||
File "libwavpack-1.dll"
|
||||
File "libwinpthread-1.dll"
|
||||
File "Qt5Concurrent.dll"
|
||||
File "Qt5Core.dll"
|
||||
File "Qt5Gui.dll"
|
||||
File "Qt5Network.dll"
|
||||
File "Qt5Sql.dll"
|
||||
File "Qt5Widgets.dll"
|
||||
File "Qt5Xml.dll"
|
||||
File "zlib1.dll"
|
||||
File "libxine-2.dll"
|
||||
File "libmpcdec-5.dll"
|
||||
File "libtheora-0.dll"
|
||||
File "libfftw3-3.dll"
|
||||
|
||||
; Register Strawberry with Default Programs
|
||||
Var /GLOBAL AppIcon
|
||||
Var /GLOBAL AppExe
|
||||
StrCpy $AppExe "$INSTDIR\strawberry.exe"
|
||||
StrCpy $AppIcon "$INSTDIR\strawberry.ico"
|
||||
|
||||
${RegisterCapabilities}
|
||||
|
||||
${RegisterMediaType} ".mp3" $AppExe $AppIcon "MP3 Audio File"
|
||||
${RegisterMediaType} ".flac" $AppExe $AppIcon "FLAC Audio File"
|
||||
${RegisterMediaType} ".ogg" $AppExe $AppIcon "OGG Audio File"
|
||||
${RegisterMediaType} ".spx" $AppExe $AppIcon "OGG Speex Audio File"
|
||||
${RegisterMediaType} ".m4a" $AppExe $AppIcon "MP4 Audio File"
|
||||
${RegisterMediaType} ".aac" $AppExe $AppIcon "AAC Audio File"
|
||||
${RegisterMediaType} ".wma" $AppExe $AppIcon "WMA Audio File"
|
||||
${RegisterMediaType} ".wav" $AppExe $AppIcon "WAV Audio File"
|
||||
|
||||
${RegisterMediaType} ".pls" $AppExe $AppIcon "PLS Audio File"
|
||||
${RegisterMediaType} ".m3u" $AppExe $AppIcon "M3U Audio File"
|
||||
${RegisterMediaType} ".xspf" $AppExe $AppIcon "XSPF Audio File"
|
||||
${RegisterMediaType} ".asx" $AppExe $AppIcon "Windows Media Audio/Video playlist"
|
||||
|
||||
${RegisterMimeType} "audio/mp3" "mp3" "{cd3afa76-b84f-48f0-9393-7edc34128127}"
|
||||
${RegisterMimeType} "audio/mp4" "m4a" "{cd3afa7c-b84f-48f0-9393-7edc34128127}"
|
||||
${RegisterMimeType} "audio/x-ms-wma" "wma" "{cd3afa84-b84f-48f0-9393-7edc34128127}"
|
||||
${RegisterMimeType} "audio/wav" "wav" "{cd3afa7b-b84f-48f0-9393-7edc34128127}"
|
||||
|
||||
${RegisterMimeType} "audio/mpegurl" "m3u" "{cd3afa78-b84f-48f0-9393-7edc34128127}"
|
||||
${RegisterMimeType} "application/x-wmplayer" "asx" "{cd3afa96-b84f-48f0-9393-7edc34128127}"
|
||||
|
||||
StrCpy $0 "$EXEDIR\install.log"
|
||||
Push $0
|
||||
Call DumpLog
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section "Qt Platforms" platforms
|
||||
SetOutPath "$INSTDIR\platforms"
|
||||
File "/oname=qwindows.dll" "platforms\qwindows.dll"
|
||||
|
||||
StrCpy $0 "$EXEDIR\install.log"
|
||||
Push $0
|
||||
Call DumpLog
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section "Qt SQL Drivers" sqldrivers
|
||||
SetOutPath "$INSTDIR\sqldrivers"
|
||||
File "/oname=qsqlite.dll" "sqldrivers\qsqlite.dll"
|
||||
|
||||
StrCpy $0 "$EXEDIR\install.log"
|
||||
Push $0
|
||||
Call DumpLog
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section "Qt image format plugins" imageformats
|
||||
SetOutPath "$INSTDIR\imageformats"
|
||||
File "/oname=qgif.dll" "imageformats\qgif.dll"
|
||||
File "/oname=qico.dll" "imageformats\qico.dll"
|
||||
File "/oname=qjpeg.dll" "imageformats\qjpeg.dll"
|
||||
|
||||
StrCpy $0 "$EXEDIR\install.log"
|
||||
Push $0
|
||||
Call DumpLog
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section "Gstreamer plugins" gstreamer-plugins
|
||||
SetOutPath "$INSTDIR\gstreamer-plugins"
|
||||
|
||||
File "/oname=libgstapetag.dll" "gstreamer-plugins\libgstapetag.dll"
|
||||
File "/oname=libgstapp.dll" "gstreamer-plugins\libgstapp.dll"
|
||||
File "/oname=libgstasf.dll" "gstreamer-plugins\libgstasf.dll"
|
||||
File "/oname=libgstaiff.dll" "gstreamer-plugins\libgstaiff.dll"
|
||||
File "/oname=libgstaudioconvert.dll" "gstreamer-plugins\libgstaudioconvert.dll"
|
||||
File "/oname=libgstaudiofx.dll" "gstreamer-plugins\libgstaudiofx.dll"
|
||||
File "/oname=libgstaudioparsers.dll" "gstreamer-plugins\libgstaudioparsers.dll"
|
||||
File "/oname=libgstaudioresample.dll" "gstreamer-plugins\libgstaudioresample.dll"
|
||||
File "/oname=libgstaudiotestsrc.dll" "gstreamer-plugins\libgstaudiotestsrc.dll"
|
||||
File "/oname=libgstautodetect.dll" "gstreamer-plugins\libgstautodetect.dll"
|
||||
File "/oname=libgstcoreelements.dll" "gstreamer-plugins\libgstcoreelements.dll"
|
||||
File "/oname=libgstdirectsound.dll" "gstreamer-plugins\libgstdirectsound.dll"
|
||||
File "/oname=libgstequalizer.dll" "gstreamer-plugins\libgstequalizer.dll"
|
||||
File "/oname=libgstfaad.dll" "gstreamer-plugins\libgstfaad.dll"
|
||||
File "/oname=libgstflac.dll" "gstreamer-plugins\libgstflac.dll"
|
||||
File "/oname=libgstgio.dll" "gstreamer-plugins\libgstgio.dll"
|
||||
File "/oname=libgsticydemux.dll" "gstreamer-plugins\libgsticydemux.dll"
|
||||
File "/oname=libgstid3demux.dll" "gstreamer-plugins\libgstid3demux.dll"
|
||||
File "/oname=libgstisomp4.dll" "gstreamer-plugins\libgstisomp4.dll"
|
||||
File "/oname=libgstlame.dll" "gstreamer-plugins\libgstlame.dll"
|
||||
File "/oname=libgstogg.dll" "gstreamer-plugins\libgstogg.dll"
|
||||
File "/oname=libgstopusparse.dll" "gstreamer-plugins\libgstopusparse.dll"
|
||||
File "/oname=libgstplayback.dll" "gstreamer-plugins\libgstplayback.dll"
|
||||
File "/oname=libgstreplaygain.dll" "gstreamer-plugins\libgstreplaygain.dll"
|
||||
File "/oname=libgstspectrum.dll" "gstreamer-plugins\libgstspectrum.dll"
|
||||
File "/oname=libgstspeex.dll" "gstreamer-plugins\libgstspeex.dll"
|
||||
File "/oname=libgsttaglib.dll" "gstreamer-plugins\libgsttaglib.dll"
|
||||
File "/oname=libgsttypefindfunctions.dll" "gstreamer-plugins\libgsttypefindfunctions.dll"
|
||||
File "/oname=libgstvolume.dll" "gstreamer-plugins\libgstvolume.dll"
|
||||
File "/oname=libgstvorbis.dll" "gstreamer-plugins\libgstvorbis.dll"
|
||||
File "/oname=libgstwavpack.dll" "gstreamer-plugins\libgstwavpack.dll"
|
||||
File "/oname=libgstwavparse.dll" "gstreamer-plugins\libgstwavparse.dll"
|
||||
|
||||
StrCpy $0 "$EXEDIR\install.log"
|
||||
Push $0
|
||||
Call DumpLog
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section "Xine plugins" xine-plugins
|
||||
SetOutPath "$INSTDIR\xine-plugins"
|
||||
File "/oname=xineplug_ao_out_directx2.dll" "xine-plugins\xineplug_ao_out_directx2.dll"
|
||||
File "/oname=xineplug_ao_out_directx.dll" "xine-plugins\xineplug_ao_out_directx.dll"
|
||||
File "/oname=xineplug_decode_dts.dll" "xine-plugins\xineplug_decode_dts.dll"
|
||||
File "/oname=xineplug_decode_dvaudio.dll" "xine-plugins\xineplug_decode_dvaudio.dll"
|
||||
File "/oname=xineplug_decode_faad.dll" "xine-plugins\xineplug_decode_faad.dll"
|
||||
File "/oname=xineplug_decode_gsm610.dll" "xine-plugins\xineplug_decode_gsm610.dll"
|
||||
File "/oname=xineplug_decode_lpcm.dll" "xine-plugins\xineplug_decode_lpcm.dll"
|
||||
File "/oname=xineplug_decode_mad.dll" "xine-plugins\xineplug_decode_mad.dll"
|
||||
File "/oname=xineplug_decode_mpc.dll" "xine-plugins\xineplug_decode_mpc.dll"
|
||||
File "/oname=xineplug_decode_mpeg2.dll" "xine-plugins\xineplug_decode_mpeg2.dll"
|
||||
File "/oname=xineplug_dmx_asf.dll" "xine-plugins\xineplug_dmx_asf.dll"
|
||||
File "/oname=xineplug_dmx_audio.dll" "xine-plugins\xineplug_dmx_audio.dll"
|
||||
File "/oname=xineplug_dmx_playlist.dll" "xine-plugins\xineplug_dmx_playlist.dll"
|
||||
File "/oname=xineplug_dmx_slave.dll" "xine-plugins\xineplug_dmx_slave.dll"
|
||||
File "/oname=xineplug_flac.dll" "xine-plugins\xineplug_flac.dll"
|
||||
File "/oname=xineplug_wavpack.dll" "xine-plugins\xineplug_wavpack.dll"
|
||||
File "/oname=xineplug_xiph.dll" "xine-plugins\xineplug_xiph.dll"
|
||||
|
||||
StrCpy $0 "$EXEDIR\install.log"
|
||||
Push $0
|
||||
Call DumpLog
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section "Xine plugins post" xine-plugins-post
|
||||
SetOutPath "$INSTDIR\xine-plugins\post"
|
||||
File "/oname=xineplug_post_audio_filters.dll" "xine-plugins\post\xineplug_post_audio_filters.dll"
|
||||
File "/oname=xineplug_post_goom.dll" "xine-plugins\post\xineplug_post_goom.dll"
|
||||
File "/oname=xineplug_post_mosaico.dll" "xine-plugins\post\xineplug_post_mosaico.dll"
|
||||
File "/oname=xineplug_post_planar.dll" "xine-plugins\post\xineplug_post_planar.dll"
|
||||
File "/oname=xineplug_post_switch.dll" "xine-plugins\post\xineplug_post_switch.dll"
|
||||
File "/oname=xineplug_post_tvtime.dll" "xine-plugins\post\xineplug_post_tvtime.dll"
|
||||
File "/oname=xineplug_post_visualizations.dll" "xine-plugins\post\xineplug_post_visualizations.dll"
|
||||
|
||||
StrCpy $0 "$EXEDIR\install.log"
|
||||
Push $0
|
||||
Call DumpLog
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section "Start menu items" startmenu
|
||||
; Create Start Menu folders and shortcuts.
|
||||
SetShellVarContext all
|
||||
|
||||
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\strawberry.exe"
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
|
||||
|
||||
StrCpy $0 "$EXEDIR\install.log"
|
||||
Push $0
|
||||
Call DumpLog
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section "Uninstaller"
|
||||
; Create uninstaller
|
||||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME}"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\Uninstall.exe"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\strawberry.ico"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_DISPLAY_VERSION}"
|
||||
WriteRegDWORD ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "VersionMajor" "${PRODUCT_VERSION_MAJOR}"
|
||||
WriteRegDWORD ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "VersionMinor" "${PRODUCT_VERSION_MINOR}"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
|
||||
|
||||
StrCpy $0 "$EXEDIR\install.log"
|
||||
Push $0
|
||||
Call DumpLog
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section "Uninstall"
|
||||
; Kill strawberry.exe if it's running
|
||||
; This calling convention is retarded...
|
||||
;StrCpy $0 "strawberry.exe"
|
||||
;KillProc::FindProcesses
|
||||
;StrCmp $1 "-1" wooops
|
||||
|
||||
;StrCmp $0 "0" completed
|
||||
|
||||
;DetailPrint "Killing running strawberry.exe..."
|
||||
|
||||
;StrCpy $0 "strawberry.exe"
|
||||
;KillProc::KillProcesses
|
||||
;StrCmp $1 "-1" wooops
|
||||
|
||||
;Sleep 2000
|
||||
;Goto completed
|
||||
|
||||
;wooops:
|
||||
;DetailPrint "-> Error: Something went wrong while killing running strawberry.exe"
|
||||
;Abort
|
||||
|
||||
;completed:
|
||||
|
||||
; Delete all the files
|
||||
|
||||
;Delete "$EXEDIR\install.log"
|
||||
|
||||
Delete "$INSTDIR\strawberry.ico"
|
||||
Delete "$INSTDIR\strawberry.exe"
|
||||
Delete "$INSTDIR\strawberry-tagreader.exe"
|
||||
|
||||
Delete "$INSTDIR\libbz2.dll"
|
||||
Delete "$INSTDIR\libcdio-16.dll"
|
||||
Delete "$INSTDIR\libchromaprint.dll"
|
||||
Delete "$INSTDIR\libcrypto-1_1.dll"
|
||||
Delete "$INSTDIR\libfaad-2.dll"
|
||||
Delete "$INSTDIR\libffi-6.dll"
|
||||
Delete "$INSTDIR\libFLAC-8.dll"
|
||||
Delete "$INSTDIR\libfreetype-6.dll"
|
||||
Delete "$INSTDIR\libgcc_s_sjlj-1.dll"
|
||||
Delete "$INSTDIR\libgio-2.0-0.dll"
|
||||
Delete "$INSTDIR\libglib-2.0-0.dll"
|
||||
Delete "$INSTDIR\libgmodule-2.0-0.dll"
|
||||
Delete "$INSTDIR\libgobject-2.0-0.dll"
|
||||
Delete "$INSTDIR\libgstapp-1.0-0.dll"
|
||||
Delete "$INSTDIR\libgstaudio-1.0-0.dll"
|
||||
Delete "$INSTDIR\libgstbase-1.0-0.dll"
|
||||
Delete "$INSTDIR\libgstfft-1.0-0.dll"
|
||||
Delete "$INSTDIR\libgstpbutils-1.0-0.dll"
|
||||
Delete "$INSTDIR\libgstreamer-1.0-0.dll"
|
||||
Delete "$INSTDIR\libgstriff-1.0-0.dll"
|
||||
Delete "$INSTDIR\libgstrtp-1.0-0.dll"
|
||||
Delete "$INSTDIR\libgstrtsp-1.0-0.dll"
|
||||
Delete "$INSTDIR\libgstsdp-1.0-0.dll"
|
||||
Delete "$INSTDIR\libgsttag-1.0-0.dll"
|
||||
Delete "$INSTDIR\libgstvideo-1.0-0.dll"
|
||||
Delete "$INSTDIR\libharfbuzz-0.dll"
|
||||
Delete "$INSTDIR\libiconv-2.dll"
|
||||
Delete "$INSTDIR\libintl-8.dll"
|
||||
Delete "$INSTDIR\libjpeg-9.dll"
|
||||
Delete "$INSTDIR\liblastfm5.dll"
|
||||
Delete "$INSTDIR\libmp3lame-0.dll"
|
||||
Delete "$INSTDIR\libogg-0.dll"
|
||||
Delete "$INSTDIR\libopus-0.dll"
|
||||
Delete "$INSTDIR\libpcre-1.dll"
|
||||
Delete "$INSTDIR\libpcre2-16-0.dll"
|
||||
Delete "$INSTDIR\libpng16-16.dll"
|
||||
Delete "$INSTDIR\libprotobuf-15.dll"
|
||||
Delete "$INSTDIR\libspeex-1.dll"
|
||||
Delete "$INSTDIR\libsqlite3-0.dll"
|
||||
Delete "$INSTDIR\libssl-1_1.dll"
|
||||
Delete "$INSTDIR\libstdc++-6.dll"
|
||||
Delete "$INSTDIR\libtag.dll"
|
||||
Delete "$INSTDIR\libvorbis-0.dll"
|
||||
Delete "$INSTDIR\libvorbisenc-2.dll"
|
||||
Delete "$INSTDIR\libwavpack-1.dll"
|
||||
Delete "$INSTDIR\libwinpthread-1.dll"
|
||||
Delete "$INSTDIR\Qt5Concurrent.dll"
|
||||
Delete "$INSTDIR\Qt5Core.dll"
|
||||
Delete "$INSTDIR\Qt5Gui.dll"
|
||||
Delete "$INSTDIR\Qt5Network.dll"
|
||||
Delete "$INSTDIR\Qt5Sql.dll"
|
||||
Delete "$INSTDIR\Qt5Widgets.dll"
|
||||
Delete "$INSTDIR\Qt5Xml.dll"
|
||||
Delete "$INSTDIR\zlib1.dll"
|
||||
Delete "$INSTDIR\libxine-2.dll"
|
||||
Delete "$INSTDIR\libmpcdec-5.dll"
|
||||
Delete "$INSTDIR\libtheora-0.dll"
|
||||
Delete "$INSTDIR\libfftw3-3.dll"
|
||||
|
||||
Delete "$INSTDIR\platforms\qwindows.dll"
|
||||
Delete "$INSTDIR\sqldrivers\qsqlite.dll"
|
||||
|
||||
Delete "$INSTDIR\imageformats\qgif.dll"
|
||||
Delete "$INSTDIR\imageformats\qico.dll"
|
||||
Delete "$INSTDIR\imageformats\qjpeg.dll"
|
||||
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstapetag.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstapp.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstasf.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstaiff.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstaudioconvert.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstaudiofx.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstaudioparsers.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstaudioresample.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstaudiotestsrc.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstautodetect.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstcoreelements.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstdirectsound.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstequalizer.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstfaad.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstflac.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstgio.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgsticydemux.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstid3demux.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstisomp4.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstlame.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstogg.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstopusparse.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstplayback.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstreplaygain.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstspectrum.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstspeex.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgsttaglib.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgsttypefindfunctions.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstvolume.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstvorbis.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstwavpack.dll"
|
||||
Delete "$INSTDIR\gstreamer-plugins\libgstwavparse.dll"
|
||||
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_ao_out_directx2.dll"
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_ao_out_directx.dll"
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_decode_dts.dll"
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_decode_dvaudio.dll"
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_decode_faad.dll"
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_decode_gsm610.dll"
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_decode_lpcm.dll"
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_decode_mad.dll"
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_decode_mpc.dll"
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_decode_mpeg2.dll"
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_dmx_asf.dll"
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_dmx_audio.dll"
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_dmx_playlist.dll"
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_dmx_slave.dll"
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_flac.dll"
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_wavpack.dll"
|
||||
Delete "$INSTDIR\xine-plugins\xineplug_xiph.dll"
|
||||
|
||||
Delete "$INSTDIR\xine-plugins\post\xineplug_post_audio_filters.dll"
|
||||
Delete "$INSTDIR\xine-plugins\post\xineplug_post_goom.dll"
|
||||
Delete "$INSTDIR\xine-plugins\post\xineplug_post_mosaico.dll"
|
||||
Delete "$INSTDIR\xine-plugins\post\xineplug_post_planar.dll"
|
||||
Delete "$INSTDIR\xine-plugins\post\xineplug_post_switch.dll"
|
||||
Delete "$INSTDIR\xine-plugins\post\xineplug_post_tvtime.dll"
|
||||
Delete "$INSTDIR\xine-plugins\post\xineplug_post_visualizations.dll"
|
||||
|
||||
Delete "$INSTDIR\Uninstall.exe"
|
||||
|
||||
; Remove the installation folders.
|
||||
RMDir "$INSTDIR\platforms"
|
||||
RMDir "$INSTDIR\sqldrivers"
|
||||
RMDir "$INSTDIR\imageformats"
|
||||
RMDir "$INSTDIR\gstreamer-plugins"
|
||||
RMDir "$INSTDIR\xine-plugins\post"
|
||||
RMDir "$INSTDIR\xine-plugins"
|
||||
RMDir "$INSTDIR"
|
||||
|
||||
; Remove the Shortcuts
|
||||
SetShellVarContext all
|
||||
|
||||
Delete "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk"
|
||||
Delete "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk"
|
||||
RMDir /r "$SMPROGRAMS\${PRODUCT_NAME}"
|
||||
|
||||
; Remove the entry from 'installed programs list'
|
||||
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
|
||||
|
||||
; Unregister from Default Programs
|
||||
${UnRegisterCapabilities}
|
||||
|
||||
SectionEnd
|
||||
|
||||
6
dist/windows/windres.rc.in
vendored
6
dist/windows/windres.rc.in
vendored
@@ -1,7 +1,7 @@
|
||||
strawberry ICON "${CMAKE_CURRENT_SOURCE_DIR}/../dist/windows/strawberry.ico"
|
||||
1 VERSIONINFO
|
||||
FILEVERSION ${STRAWBERRY_VERSION_MAJOR},${STRAWBERRY_VERSION_MINOR},0,0
|
||||
PRODUCTVERSION ${STRAWBERRY_VERSION_MAJOR},${STRAWBERRY_VERSION_MINOR},0,0
|
||||
FILEVERSION ${STRAWBERRY_VERSION_MAJOR},${STRAWBERRY_VERSION_MINOR},{STRAWBERRY_VERSION_PATCH},0
|
||||
PRODUCTVERSION ${STRAWBERRY_VERSION_MAJOR},${STRAWBERRY_VERSION_MINOR},{STRAWBERRY_VERSION_PATCH},0
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
@@ -11,7 +11,7 @@ BEGIN
|
||||
VALUE "FileDescription", "Strawberry Music Player"
|
||||
VALUE "FileVersion", "${STRAWBERRY_VERSION_DISPLAY}"
|
||||
VALUE "InternalName", "strawberry"
|
||||
VALUE "LegalCopyright", "David Sansome"
|
||||
VALUE "LegalCopyright", "David Sansome / Jonas Kvinge"
|
||||
VALUE "OriginalFilename", "strawberry.exe"
|
||||
VALUE "ProductName", "Strawberry"
|
||||
VALUE "ProductVersion", "${STRAWBERRY_VERSION_DISPLAY}"
|
||||
|
||||
Reference in New Issue
Block a user