Move buildscripts.

This commit is contained in:
codestation
2016-11-19 20:49:24 -04:00
parent a8194e88fc
commit ae6c503407
10 changed files with 210 additions and 1 deletions

73
buildscripts/build_macos.sh Executable file
View File

@@ -0,0 +1,73 @@
#!/bin/bash
set -eu
show_usage() {
echo -e "Usage: $0 <host> <branch> [config]"
}
if [ $# -lt 1 ]
then
show_usage
exit 1
fi
SERVER_HOST=$1
BRANCH=$2
QT_VERSION=5.7
QT_REVISION=${QT_VERSION}.0
QCMA_SOURCES=~/projects/qcma
VERSION=$(git -C "${QCMA_SOURCES}" describe --tags --abbrev=8)
VERSION=${VERSION#v*}
if [ $# -ge 3 ]; then
CONFIG=$3
else
CONFIG=
fi
case "$CONFIG" in
*DISABLE_FFMPEG*)
BUILD_MODE=_noffmpeg
;;
*)
BUILD_MODE=
;;
esac
git -C "${QCMA_SOURCES}" bundle create qcma.bundle --all
scp "${QCMA_SOURCES}/qcma.bundle" $SERVER_HOST:qcma.bundle
ssh -T "${SERVER_HOST}" << EOSSH
#!/bin/bash
set -eu
QCMA_DIR="\$HOME/qcma"
rm -rf "\${QCMA_DIR}"
git clone -b ${BRANCH} qcma.bundle "\${QCMA_DIR}"
rm -rf qcma_build
mkdir qcma_build
pushd qcma_build
PATH=~/Qt${QT_REVISION}/${QT_VERSION}/clang_64/bin:/usr/local/bin:\$PATH
lrelease "\${QCMA_DIR}/qcma.pro"
qmake "\${QCMA_DIR}/qcma.pro" $CONFIG
make -j2
popd
rm -rf \${HOME}/qcma_output
mkdir \${HOME}/qcma_output
mv qcma_build/gui/qcma.app \${HOME}/qcma_output/Qcma.app
cp \${QCMA_DIR}/buildscripts/macos/* \${HOME}/qcma_output/
pushd \${HOME}/qcma_output/
macdeployqt Qcma.app -appstore-compliant
appdmg appdmg.json Qcma_${VERSION}${BUILD_MODE}.dmg
echo "Created Qcma_${VERSION}${BUILD_MODE}.dmg"
popd
EOSSH
scp ${SERVER_HOST}:qcma_output/Qcma_${VERSION}${BUILD_MODE}.dmg .

91
buildscripts/build_windows.sh Executable file
View File

@@ -0,0 +1,91 @@
#!/bin/bash
set -ex
SERVER_HOST=$1
VERSION=$(git describe --tags --abbrev=8)
scp windows/driver/*.exe ${SERVER_HOST}:
scp windows/qcma.nsi ${SERVER_HOST}:qcma.nsi
scp COPYING ${SERVER_HOST}:COPYING.rtf
scp gui/resources/images/qcma.ico ${SERVER_HOST}:qcma.ico
ssh -T "${SERVER_HOST}" << EOSSH
#!/bin/bash
set -ex
for arch in i686 x86_64; do
if [ "\$arch" == "i686" ]; then
bits=32
seh=libgcc_s_dw2-1.dll
else
bits=64
seh=libgcc_s_seh-1.dll
fi
rm -rf win_\${arch}
mkdir win_\${arch}
OUT=\$(pwd)
pushd /cygdrive/c/ffmpeg-3.1.4-win\${bits}-shared/bin
cp avcodec-57.dll "\${OUT}/win_\${arch}/"
cp avformat-57.dll "\${OUT}/win_\${arch}/"
cp avutil-55.dll "\${OUT}/win_\${arch}/"
cp swscale-4.dll "\${OUT}/win_\${arch}/"
cp swresample-2.dll "\${OUT}/win_\${arch}/"
pushd /cygdrive/c/msys64/mingw\${bits}/bin
cp libfreetype-6.dll "\${OUT}/win_\${arch}/"
cp \${seh} "\${OUT}/win_\${arch}/"
cp libglib-2.0-0.dll "\${OUT}/win_\${arch}/"
cp libgraphite2.dll "\${OUT}/win_\${arch}/"
cp libharfbuzz-0.dll "\${OUT}/win_\${arch}/"
cp libiconv-2.dll "\${OUT}/win_\${arch}/"
cp libicudt57.dll "\${OUT}/win_\${arch}/"
cp libicuin57.dll "\${OUT}/win_\${arch}/"
cp libicuuc57.dll "\${OUT}/win_\${arch}/"
cp libjpeg-8.dll "\${OUT}/win_\${arch}/"
cp libpcre-1.dll "\${OUT}/win_\${arch}/"
cp libpcre16-0.dll "\${OUT}/win_\${arch}/"
cp libpng16-16.dll "\${OUT}/win_\${arch}/"
cp libsqlite3-0.dll "\${OUT}/win_\${arch}/"
cp libstdc++-6.dll "\${OUT}/win_\${arch}/"
cp libtiff-5.dll "\${OUT}/win_\${arch}/"
cp libusb-1.0.dll "\${OUT}/win_\${arch}/"
cp libvitamtp-5.dll "\${OUT}/win_\${arch}/"
cp libwinpthread-1.dll "\${OUT}/win_\${arch}/"
cp libxml2-2.dll "\${OUT}/win_\${arch}/"
cp Qt5Core.dll "\${OUT}/win_\${arch}/"
cp Qt5Gui.dll "\${OUT}/win_\${arch}/"
cp Qt5Sql.dll "\${OUT}/win_\${arch}/"
cp Qt5Network.dll "\${OUT}/win_\${arch}/"
cp Qt5Widgets.dll "\${OUT}/win_\${arch}/"
cp zlib1.dll "\${OUT}/win_\${arch}/"
cp liblzma-5.dll "\${OUT}/win_\${arch}/"
cp libbz2-1.dll "\${OUT}/win_\${arch}/"
cp libintl-8.dll "\${OUT}/win_\${arch}/"
cp qcma.exe "\${OUT}/win_\${arch}/"
cp qcma_console.exe "\${OUT}/win_\${arch}/"
pushd /cygdrive/c/msys64/mingw\${bits}/share/qt5/plugins
mkdir "\${OUT}/win_\${arch}/platforms"
mkdir "\${OUT}/win_\${arch}/imageformats"
mkdir "\${OUT}/win_\${arch}/sqldrivers"
cp platforms/qwindows.dll "\${OUT}/win_\${arch}/platforms"
cp imageformats/qgif.dll "\${OUT}/win_\${arch}/imageformats"
cp imageformats/qjpeg.dll "\${OUT}/win_\${arch}/imageformats"
cp imageformats/qtiff.dll "\${OUT}/win_\${arch}/imageformats"
cp sqldrivers/qsqlite.dll "\${OUT}/win_\${arch}/sqldrivers"
pushd /cygdrive/c/msys64/mingw\${bits}/share/qt5/translations
mkdir "\${OUT}/win_\${arch}/"translations
cp qt_*.qm "\${OUT}/win_\${arch}/"translations
popd
popd
popd
popd
done
"/cygdrive/c/Program Files (x86)/NSIS/makensis" qcma.nsi
EOSSH
scp ${SERVER_HOST}:Qcma_setup.exe Qcma_setup-${VERSION}.exe

View File

@@ -0,0 +1,10 @@
{
"title": "Qcma Installer",
"icon": "installer.icns",
"background": "installer-bg.png",
"icon-size": 80,
"contents": [
{ "x": 456, "y": 344, "type": "link", "path": "/Applications" },
{ "x": 182, "y": 344, "type": "file", "path": "Qcma.app" }
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

View File

@@ -0,0 +1,80 @@
#
# qcma spec file
#
%define _version 0.3.13
%if "%{_version}" == "testing" || "%{_version}" == "master"
%define _verprefix %{_version}
%else
%define _verprefix v%{_version}
%endif
%if 0%{?fedora}
%define _qt5base qt5-qtbase
%define _qt5imageformats qt5-qtimageformats
%define _pkgconfig pkgconfig
%define _qt5linguist qt5-linguist
%define _qt5basedevel qt5-qtbase-devel
%else
%define qmake_qt5 qmake-qt5
%define _qt5base libqt5-qtbase
%define _qt5imageformats libqt5-qtimageformats
%define _pkgconfig pkg-config
%define _qt5linguist libqt5-linguist
%define _qt5basedevel libqt5-qtbase-devel
%endif
Name: qcma
Summary: PSVita Content Manager Assistant
License: GPL-3.0
Release: 1
Version: %{_version}
URL: https://github.com/codestation/qcma
Source: https://github.com/codestation/qcma/archive/%{_verprefix}/qcma-%{_version}.tar.gz
Group: Productivity/File utilities
Requires: libnotify
Requires: ffmpeg
Requires: %{_qt5base}
Requires: %{_qt5imageformats}
Requires: libvitamtp5 >= 2.5.9
BuildRequires: gcc-c++
BuildRequires: %{_pkgconfig}
BuildRequires: libnotify-devel
BuildRequires: ffmpeg-devel
BuildRequires: libvitamtp-devel
BuildRequires: %{_qt5linguist}
BuildRequires: %{_qt5basedevel}
%description
QCMA is an cross-platform application to provide a Open Source implementation
of the original Content Manager Assistant that comes with the PS Vita. QCMA
is meant to be compatible with Linux, Windows and MAC OS X.
%prep
%setup -n %{name}-%{version}
%build
lrelease-qt5 common/resources/translations/*.ts
%{qmake_qt5} PREFIX=/usr qcma.pro CONFIG+="QT5_SUFFIX"
make %{?_smp_mflags}
%install
make install INSTALL_ROOT=%{buildroot}
%files
%defattr(-,root,root)
%{_bindir}/qcma
%{_prefix}/share/applications/qcma.desktop
%{_prefix}/share/icons/hicolor/64x64/apps/qcma.png
%{_prefix}/share/man/man1/qcma.1.gz
%changelog
%package cli
Summary: Content Manager Assistant for the PS Vita (headless version)
%description cli
Headless version of Qcma
%files cli
%{_bindir}/qcma_cli
%{_prefix}/share/man/man1/qcma_cli.1.gz

View File

@@ -0,0 +1,43 @@
_realname=qcma
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=v0.3.13.13.g5236770
pkgrel=1
pkgdesc="Content Manager Assistant for the PS Vita"
arch=(any)
url="https://github.com/codestation/qcma"
license=("GPL")
makedepends=(${MINGW_PACKAGE_PREFIX}-pkg-config)
depends=(${MINGW_PACKAGE_PREFIX}-crt ${MINGW_PACKAGE_PREFIX}-qt5 ${MINGW_PACKAGE_PREFIX}-ffmpeg ${MINGW_PACKAGE_PREFIX}-vitamtp)
options=(strip staticlibs)
source=('git+https://github.com/codestation/qcma.git#branch=testing')
sha256sums=('SKIP')
pkgver() {
cd qcma
echo "$(git describe --long --tags | tr - .)"
}
build() {
unset LDFLAGS
for opt in gui console; do
[[ -d ${srcdir}/build-${MINGW_CHOST} ]] && rm -rf ${srcdir}/build-${MINGW_CHOST}_${opt}
mkdir -p ${srcdir}/build-${MINGW_CHOST}_${opt} && cd ${srcdir}/build-${MINGW_CHOST}_${opt}
lrelease ../qcma/qcma.pro
qmake ../qcma/qcma.pro CONFIG+=${opt}
make
done
}
package() {
for opt in gui console; do
cd ${srcdir}/build-${MINGW_CHOST}_${opt}
if [ $opt == "console" ]; then
install -D gui/qcma.exe "${pkgdir}${MINGW_PREFIX}/bin/qcma_console.exe"
else
install -D gui/qcma.exe "${pkgdir}${MINGW_PREFIX}/bin/qcma.exe"
fi
done
}

View File

@@ -0,0 +1,299 @@
#### QCMA NSIS Install Script
### Includes
!include LogicLib.nsh
!include MUI.nsh
!include x64.nsh
!include Sections.nsh
### General information
!define PRODUCT_NAME "Qcma"
!define PRODUCT_EXE_NAME "qcma.exe"
!define PRODUCT_VERSION_MAJOR 0
!define PRODUCT_VERSION_MINOR 3
!define PRODUCT_VERSION_BUILD 13
!define PRODUCT_PUBLISHER "codestation"
!define PRODUCT_WEB_SITE "https://github.com/codestation/qcma"
### Macros
!macro VerifyUserIsAdmin
UserInfo::GetAccountType
pop $0
${If} $0 != "admin" ;Require admin rights on NT4+
MessageBox mb_iconstop "Administrator rights required!"
SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
Quit
${EndIf}
!macroend
### Functions
Function finishPageRunFunction
ExecShell "" "$INSTDIR\${PRODUCT_EXE_NAME}"
FunctionEnd
Function finishpageaction
CreateShortcut "$desktop\Qcma.lnk" "$instdir\qcma.exe"
FunctionEnd
### Variables
Var StartMenuFolder
### Installer settings
# Set compression
SetCompressor /solid lzma
# Require admin rights on NT6+ (When UAC is turned on)
RequestExecutionLevel admin
# This will be in the installer/uninstaller title bar
Name "${PRODUCT_NAME}"
OutFile "${PRODUCT_NAME}_setup.exe"
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
!define MUI_LANGDLL_ALLLANGUAGES
!define MUI_ABORTWARNING
!define MUI_ICON "qcma.ico"
!define MUI_UNICON "qcma.ico"
## Add installer pages
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "COPYING.rtf"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_SHOWREADME ""
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
!define MUI_FINISHPAGE_SHOWREADME_TEXT "Create Desktop Shortcut"
!define MUI_FINISHPAGE_SHOWREADME_FUNCTION finishpageaction
!define MUI_FINISHPAGE_RUN ""
!define MUI_FINISHPAGE_RUN_NOTCHECKED
!define MUI_FINISHPAGE_RUN_FUNCTION finishPageRunFunction
!insertmacro MUI_PAGE_FINISH
## Add uninstaller pages
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
## Define languages
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "Spanish"
!insertmacro MUI_LANGUAGE "Japanese"
### Installer
section "Qcma (required)"
SectionIn RO
# Files for the install directory - to build the installer, these should be in the same directory as the install script (this file)
SetOutPath $InstDir
# Files added here should be removed by the uninstaller (see section "uninstall")
${If} ${RunningX64}
File "win_x86_64\qcma.exe"
File "win_x86_64\qcma_console.exe"
File "win_x86_64\avcodec-57.dll"
File "win_x86_64\avformat-57.dll"
File "win_x86_64\avutil-55.dll"
File "win_x86_64\libfreetype-6.dll"
File "win_x86_64\libgcc_s_seh-1.dll"
File "win_x86_64\libglib-2.0-0.dll"
File "win_x86_64\libgraphite2.dll"
File "win_x86_64\libharfbuzz-0.dll"
File "win_x86_64\libiconv-2.dll"
File "win_x86_64\libicudt57.dll"
File "win_x86_64\libicuin57.dll"
File "win_x86_64\libicuuc57.dll"
File "win_x86_64\libjpeg-8.dll"
File "win_x86_64\libpcre-1.dll"
File "win_x86_64\libpcre16-0.dll"
File "win_x86_64\libpng16-16.dll"
File "win_x86_64\libsqlite3-0.dll"
File "win_x86_64\libstdc++-6.dll"
File "win_x86_64\libtiff-5.dll"
File "win_x86_64\libusb-1.0.dll"
File "win_x86_64\libvitamtp-5.dll"
File "win_x86_64\libwinpthread-1.dll"
File "win_x86_64\libxml2-2.dll"
File "win_x86_64\Qt5Core.dll"
File "win_x86_64\Qt5Gui.dll"
File "win_x86_64\Qt5Network.dll"
File "win_x86_64\Qt5Sql.dll"
File "win_x86_64\Qt5Widgets.dll"
File "win_x86_64\swresample-2.dll"
File "win_x86_64\swscale-4.dll"
File "win_x86_64\zlib1.dll"
File "win_x86_64\liblzma-5.dll"
File "win_x86_64\libbz2-1.dll"
File "win_x86_64\libintl-8.dll"
SetOutPath "$INSTDIR\platforms"
File "win_x86_64\platforms\qwindows.dll"
SetOutPath "$INSTDIR\imageformats"
File "win_x86_64\imageformats\qgif.dll"
File "win_x86_64\imageformats\qjpeg.dll"
File "win_x86_64\imageformats\qtiff.dll"
SetOutPath "$INSTDIR\sqldrivers"
File "win_x86_64\sqldrivers\qsqlite.dll"
SetOutPath "$INSTDIR\translations"
File "win_x86_64\translations\*.qm"
${Else}
File "win_i686\qcma.exe"
File "win_i686\qcma_console.exe"
File "win_i686\avcodec-57.dll"
File "win_i686\avformat-57.dll"
File "win_i686\avutil-55.dll"
File "win_i686\libfreetype-6.dll"
File "win_i686\libgcc_s_dw2-1.dll"
File "win_i686\libglib-2.0-0.dll"
File "win_i686\libgraphite2.dll"
File "win_i686\libharfbuzz-0.dll"
File "win_i686\libiconv-2.dll"
File "win_i686\libicudt57.dll"
File "win_i686\libicuin57.dll"
File "win_i686\libicuuc57.dll"
File "win_i686\libjpeg-8.dll"
File "win_i686\libpcre-1.dll"
File "win_i686\libpcre16-0.dll"
File "win_i686\libpng16-16.dll"
File "win_i686\libsqlite3-0.dll"
File "win_i686\libstdc++-6.dll"
File "win_i686\libtiff-5.dll"
File "win_i686\libusb-1.0.dll"
File "win_i686\libvitamtp-5.dll"
File "win_i686\libwinpthread-1.dll"
File "win_i686\libxml2-2.dll"
File "win_i686\Qt5Core.dll"
File "win_i686\Qt5Gui.dll"
File "win_i686\Qt5Sql.dll"
File "win_i686\Qt5Network.dll"
File "win_i686\Qt5Widgets.dll"
File "win_i686\swresample-2.dll"
File "win_i686\swscale-4.dll"
File "win_i686\zlib1.dll"
File "win_i686\liblzma-5.dll"
File "win_i686\libbz2-1.dll"
File "win_i686\libintl-8.dll"
SetOutPath "$INSTDIR\platforms"
File "win_i686\platforms\qwindows.dll"
SetOutPath "$INSTDIR\imageformats"
File "win_i686\imageformats\qgif.dll"
File "win_i686\imageformats\qjpeg.dll"
File "win_i686\imageformats\qtiff.dll"
SetOutPath "$INSTDIR\sqldrivers"
File "win_i686\sqldrivers\qsqlite.dll"
SetOutPath "$INSTDIR\translations"
File "win_i686\translations\*.qm"
${EndIf}
SetOutPath $InstDir\driver
File "QcmaDriver_winusb.exe"
File "QcmaDriver_libusb0.exe"
File "QcmaDriver_libusbk.exe"
# Uninstaller - See function un.onInit and section "uninstall" for configuration
WriteUninstaller "$InstDir\uninstall.exe"
SetOutPath $InstDir
# Start Menu
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_EXE_NAME}"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall ${PRODUCT_NAME}.lnk" "$INSTDIR\uninstall.exe"
!insertmacro MUI_STARTMENU_WRITE_END
# Registry information for add/remove programs
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayName" "${PRODUCT_NAME}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "InstallLocation" "$\"$INSTDIR$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayIcon" "$\"$INSTDIR\qcma.ico$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "Publisher" "${PRODUCT_PUBLISHER}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "URLInfoAbout" "$\"${PRODUCT_WEB_SITE}$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayVersion" "${PRODUCT_VERSION_MAJOR}.${PRODUCT_VERSION_MINOR}.${PRODUCT_VERSION_BUILD}"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "VersionMajor" ${PRODUCT_VERSION_MAJOR}
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "VersionMinor" ${PRODUCT_VERSION_MINOR}
# There is no option for modifying or repairing the install
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "NoRepair" 1
sectionEnd
Section "WinUSB driver" WUSB
SectionIn 1
ExecWait "$InstDir\driver\QcmaDriver_winusb.exe"
sectionEnd
Section /O "libusb0 driver" USBK
SectionIn 2
ExecWait "$InstDir\driver\QcmaDriver_libusb0.exe"
sectionEnd
Section /O "libusbK driver" USB0
SectionIn 3
ExecWait "$InstDir\driver\QcmaDriver_libusbk.exe"
sectionEnd
function .onInit
setShellVarContext all
!insertmacro VerifyUserIsAdmin
!insertmacro MUI_LANGDLL_DISPLAY
${If} ${RunningX64}
StrCpy $InstDir "$ProgramFiles64\${PRODUCT_NAME}"
SetRegView 64
${Else}
StrCpy $InstDir "$ProgramFiles32\${PRODUCT_NAME}"
${EndIf}
StrCpy $1 ${WUSB}
functionEnd
Function .onSelChange
!insertmacro StartRadioButtons $1
!insertmacro RadioButton ${WUSB}
!insertmacro RadioButton ${USB0}
!insertmacro RadioButton ${USBK}
!insertmacro EndRadioButtons
FunctionEnd
### Uninstaller
function un.onInit
SetShellVarContext all
!insertmacro VerifyUserIsAdmin
!insertmacro MUI_LANGDLL_DISPLAY
functionEnd
section "uninstall"
# Remove Start Menu launcher
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
Delete "$SMPROGRAMS\$StartMenuFolder\${PRODUCT_NAME}.lnk"
Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall ${PRODUCT_NAME}.lnk"
RMDir "$SMPROGRAMS\$StartMenuFolder"
# Remove Desktop launcher
Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
# Recursively remove the contents of $INSTDIR, then $INSTDIR itself
RMDir /r "$INSTDIR"
RMDir "$INSTDIR"
# Remove uninstaller information from the registry
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
sectionEnd