Copyright: (c) 2002 Bob Pendleton
License: LGPL-2.1
- Portion: libpng-3.dll
+ Portion: libpng14-14.dll
Source: http://www.libpng.org/pub/png/libpng.html
Copyright: (c) 2004, 2006-2009 Glenn Randers-Pehrson
License: libpng
SUBDIRS = data doc src
-EXTRA_DIST = autogen.sh extra
+EXTRA_DIST = autogen.sh extra win32
-.PHONY: run debug docs package
+.PHONY: run debug docs portable installer
run: all
- @cd src && $(MAKE) run
+ @$(CD) src && $(MAKE) run
debug: all
- @cd src && $(MAKE) debug
+ @$(CD) src && $(MAKE) debug
docs:
$(DOXYGEN)
if WIN32
-package: all
- @cd win32 && $(MAKE) installer
-else
-package: dist-bzip2
+
+portable: all
+ $(SH) win32/makepackage.sh -p $(prefix) -d "$(DATA_FILES)" \
+ -s $(STRIP) -V $(VERSION)
+
+installer: all
+ $(SH) win32/makepackage.sh -p $(prefix) -d "$(DATA_FILES)" \
+ -s $(STRIP) -V $(VERSION) -i $(MAKENSIS)
+
endif
b) Sending patches
III. Packagers
a) The build system
- b) Targeting Win32
I. Users
Since I wrote this code alongside the Yoink-specific stuff, there is
somewhat of a blurry line between the two categories, unfortunately.
-3. 3rd-party code.
+3. Third-party code.
This is made up of free code from other projects or libraries (aside from
the explicit dependencies above), the licenses of which are also in the
interested in that, please observe the following:
* Stick to the coding style of the source code files you edit. Follow the
- general style of method and variable naming, as well as white spacing
+ general style of method and variable naming, as well as white space
formatting. In particular, use literal tabs with an assumed tabstop of
4 characters. Also, limit line lengths to 75 characters.
and conditions as the files you edit, usually the 2-clause BSD license.
* If you want your name and contact information in the file AUTHORS,
- please just add it in the patch you provide.
+ please make it so in the patch you provide.
III. Packagers
a) The build system
You can probably tell that the build system of this package is built from
-autoconf and automake. It should be fairly sane. If you find any build
-system problems or code which doesn't compile cleanly on your platform,
-feel free to send back patches.
-
-b) Targeting Win32
-
-If you have a working mingw32 toolchain with all the dependencies, you can
-build a win32 binary using a command such as this:
-
-./configure --host=mingw32 --prefix=/usr/mingw32/usr
-
-where mingw32 is the correct name of your toolchain and the prefix points
-to the installation of your toolchain. I maintain an archive of most of
-the dependencies. The package is in the git repository; just unzip it onto
-your toolchain and configure/compile. If everything goes smoothly, you
-should have a new, shiny yoink.exe. You can then build a complete
-installer using "make package" if you have nsis installed.
-
-I haven't tried building with cygwin or mingw32 on an actual Windows
-machine, and I certainly haven't tried to do it with Visual Studio. You're
-on your own if you go that route.
+autoconf and automake. It should be fairly sane. If you find any
+packaging-related problems or code which doesn't compile cleanly on your
+platform, feel free to send patches.
doc/yoink.6
src/Makefile])
-if test x$WIN32 = xyes
-then
- AC_CONFIG_FILES([win32/Makefile win32/mkpackage.sh win32/yoink.nsi])
-fi
-
-
AC_CONFIG_HEADERS([src/config.h])
AC_OUTPUT
--- /dev/null
+#!/bin/sh
+
+#
+# Yoink
+# Run this script to convert the manual page to html.
+#
+# Requires groff.
+# Have fun!
+#
+
+function showhelp()
+{
+ echo "Create an html manual page."
+ echo "Usage: $0 [-Hfh] [-i manpage] [-o htmlfile]"
+ echo ""
+ echo " -H Hide email addresses in the manual page."
+ echo " -f Force overwrite of output file."
+ echo " -h Show this help an exit."
+ echo " -i Specify the manual page to convert."
+ echo " -o Specify output path of html file."
+}
+
+INFILE="doc/yoink.6"
+OUTFILE="yoink.html"
+
+while getopts ":Hfhi:o:" opt
+do
+ case $opt in
+ H)
+ HIDE_EMAIL=yes
+ ;;
+ f)
+ FORCE=yes
+ ;;
+ h)
+ showhelp
+ exit 0
+ ;;
+ i)
+ INFILE="$OPTARG"
+ ;;
+ o)
+ OUTFILE="$OPTARG"
+ ;;
+ \?)
+ echo "Invalid option: -$OPTARG" >&2
+ showhelp
+ exit 1
+ ;;
+ esac
+done
+
+if test x$FORCE != xyes && test -e "$OUTFILE"
+then
+ echo "Refusing to overwrite file: $OUTFILE. Use -f to override." >&2
+ exit 1
+fi
+
+if test ! -f "$INFILE"
+then
+ echo "Can't open file: $INFILE" >&2
+ exit 1
+fi
+
+DATE=$(date +"%d %b %Y")
+
+# 1. Remove first two lines (comments about groff).
+# 2. Edit page title.
+# 3. Insert a footer before </body>.
+HTML=$(groff -t -e -mandoc -Thtml "$INFILE" | sed -e "1,2d" \
+-e "s|<title>.*</title>|<title>Yoink Manual</title>|" -e "s|</body>|\
+<p style=\"font-size: 9px; text-align: center;\">\\
+This manual page was generated on $DATE.\\
+For more information, go to the\\
+<a href=\"http://www.dogcows.com/yoink/\">Yoink website</a>.\\
+</p>\\
+</body>|")
+
+if test x$HIDE_EMAIL = xyes
+then
+# 4. Replace email addresses with a placeholder.
+ echo "$HTML" \
+ | sed -e "s|<.*@.*>|\<email address not shown\>|g" \
+ >"$OUTFILE"
+else
+ echo "$HTML" >"$OUTFILE"
+fi
+
constant. A constant 20fps or 30fps will look better than a sporadic
40-60fps. You can also decrease the \fBtimestep\fP at the expense of
decreased simulation accuracy. You'll have to experiment with this value
-to find out acceptable levels.
+to determine acceptable levels.
.PP
If you are having audio problems, you may need to upgrade OpenAL. Some
systems still provide an old, busted version of OpenAL which may result in
maintained.
.SH BUGS
.IP \(bu 3
-The robots are currently lacking in intelligence.
+The robots aren't very bright.
.IP \(bu
Although the pixelated graphics are intentional, there are some unintended
artifacts which are more obvious with certain video drivers.
.PP
-Send bug reports, patches, and love notes to:
+Send bug reports, patches and love notes to:
.IP
Charles McGarvey <@PACKAGE_BUGREPORT@>
.SH AUTHOR
--- /dev/null
+# Contributor: Charles McGarvey <onefriedrice@brokenzipper.com>
+pkgname=yoink
+pkgver=@VERSION@
+pkgrel=1
+pkgdesc="Alien-smashing action game"
+arch=('i686' 'x86_64')
+url="http://www.dogcows.com/yoink"
+license=('BSD')
+groups=()
+depends=('libgl' 'libpng' 'libvorbis' 'lua' 'openal' 'sdl')
+makedepends=('boost' 'pkgconfig')
+optdepends=()
+provides=()
+conflicts=()
+replaces=()
+backup=()
+options=()
+install=
+source=(http://www.dogcows.com/yoink/$pkgname-$pkgver.tar.bz2)
+noextract=()
+md5sums=('@CHECKSUM@')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR="$pkgdir/" install
+}
+
+# vim:set ts=2 sw=2 et:
Moof/Event.hh \
Moof/Frustum.cc \
Moof/Frustum.hh \
- Moof/Hash.cc \
- Moof/Hash.hh \
+ Moof/HashTools.cc \
+ Moof/HashTools.hh \
Moof/Image.cc \
Moof/Image.hh \
Moof/Interpolator.hh \
*
**************************************************************************/
-#include "Hash.hh"
+#include "HashTools.hh"
namespace Mf {
// 2. It will not produce the same results on little-endian and big-endian
// machines.
-unsigned getHash::operator()(const void* key, int len,
+unsigned HashFunction::operator()(const void* key, int len,
unsigned int seed) const
{
// 'm' and 'r' are mixing constants generated offline.
*
**************************************************************************/
-#ifndef _MOOF_HASH_HH_
-#define _MOOF_HASH_HH_
+#ifndef _MOOF_HASHTOOLS_HH_
+#define _MOOF_HASHTOOLS_HH_
#include <string>
namespace Mf {
-struct getHash
+struct HashFunction
{
// generic hash function
unsigned operator()(const void* key, int len,
} // namespace Mf
-#endif // _MOOF_HASH_HH_
+#endif // _MOOF_HASHTOOLS_HH_
#include <boost/shared_ptr.hpp>
-#include <Moof/Hash.hh>
+#include <Moof/HashTools.hh>
namespace Mf {
private:
- typedef stlplus::hash<std::string,T*,getHash> PtrMap;
+ typedef stlplus::hash<std::string,T*,HashFunction> PtrMap;
static PtrMap mPtrMap;
std::string mName;
};
template <class T>
-stlplus::hash<std::string,T*,getHash> Manager<T>::mPtrMap;
+stlplus::hash<std::string,T*,HashFunction> Manager<T>::mPtrMap;
} // namespace Mf
+++ /dev/null
-
-INSTALLER_NAME = yoinksetup-$(VERSION).exe
-
-.PHONY: installer
-installer:
- @echo "Building win32 installer..."
- @(sh mkpackage.sh $(INSTALLER_NAME) 2> installer.log 1>&2 && \
- rm installer.log && echo "Done.") || \
- (echo "Installer compilation failed!"; \
- echo "Check installer.log for details."; exit 1)
-
-#!/bin/bash
-
-# Download and cross-compile dependencies for Yoink. This script requires
-# bash, wget, md5sum, unzip, tar, patch, make and install. Have fun!
-
-HOST="i686-mingw32"
-PREFIX="/usr/$HOST/usr"
+#!/bin/sh
+
+#
+# Yoink
+# Run this script to download and cross-compile dependencies for win32.
+#
+# A directory named deps will be created and/or populated in the current
+# directory. Upon successful completion (be patient), the compiled
+# dependencies will be packaged into an archive named deps.tar.bz2 in the
+# current directory. To install the dependencies, execute this command:
+#
+# tar xf deps.tar.bz2 -C $PREFIX
+#
+# where $PREFIX is the path to your mingw32 toolchain. If problems occur,
+# check stdout and stderr for clues. You may be able to easily determine
+# the problem and make the necessary corrections. These packages will be
+# downloaded and built:
+#
+# SDL 1.2.14
+# boost 1.42.0 (headers only)
+# libogg 1.1.4
+# libpng 1.4.1
+# libvorbis 1.2.3
+# lua 5.1.4
+# openal-soft 1.11.753
+# zlib 1.2.3
+#
+# This script requires a working mingw32 toolchain and other basic tools.
+# Have fun!
+#
+# Example usage:
+# ./makedeps.sh -H i486-mingw32 -p /usr/i486-mingw32 -m "-j8"
+#
+# Bugs: Each time the script is run, all of the dependencies will be
+# rebuilt, even the ones which were already built successfully.
+#
+
+function showhelp()
+{
+ echo "Download and cross-compile dependencies for win32."
+ echo "Usage: $0 [-h] [-m makeopts] -H host -p prefix"
+ echo ""
+ echo " -H Specify the name of your toolchain, like i486-mingw32."
+ echo " -h Show this help an exit."
+ echo " -m Specify options to be passed to make."
+ echo " -p Specify the path to your toolchain installation."
+}
-MAKEOPTS="-j8"
+while getopts ":H:hm:p:" opt
+do
+ case $opt in
+ H)
+ HOST="$OPTARG"
+ ;;
+ h)
+ showhelp
+ exit 0
+ ;;
+ m)
+ MAKEOPTS="$OPTARG"
+ ;;
+ p)
+ PREFIX="$OPTARG"
+ ;;
+ \?)
+ echo "Invalid option: -$OPTARG" >&2
+ showhelp
+ exit 1
+ ;;
+ esac
+done
+
+if test x$HOST = x || test x$PREFIX = x
+then
+ showhelp
+ exit 1
+fi
-#####
function die()
{
PACKAGE="boost_1_42_0"
VERSION="1.42.0"
cd $DESTDIR
-[[ ! -f $PACKAGE.tar.bz2 ]] && (wget "http://sourceforge.net/projects/boost/files/boost/$VERSION/$PACKAGE.tar.bz2/download" || die "downloading $PACKAGE")
+test ! -f $PACKAGE.tar.bz2 && (wget "http://sourceforge.net/projects/boost/files/boost/$VERSION/$PACKAGE.tar.bz2/download" || die "downloading $PACKAGE")
(md5sum -c <<"EOL"
7bf3b4eb841b62ffb0ade2b82218ebe6 boost_1_42_0.tar.bz2
EOL
PACKAGE="SDL-1.2.14"
cd $DESTDIR
-[[ ! -f $PACKAGE.tar.gz ]] && (wget "http://www.libsdl.org/release/$PACKAGE.tar.gz" || die "downloading $PACKAGE")
+test ! -f $PACKAGE.tar.gz && (wget "http://www.libsdl.org/release/$PACKAGE.tar.gz" || die "downloading $PACKAGE")
(md5sum -c <<"EOL"
e52086d1b508fa0b76c52ee30b55bec4 SDL-1.2.14.tar.gz
EOL
PACKAGE="libogg-1.1.4"
cd $DESTDIR
-[[ ! -f $PACKAGE.tar.gz ]] && (wget "http://downloads.xiph.org/releases/ogg/$PACKAGE.tar.gz" || die "downloading $PACKAGE")
+test ! -f $PACKAGE.tar.gz && (wget "http://downloads.xiph.org/releases/ogg/$PACKAGE.tar.gz" || die "downloading $PACKAGE")
(md5sum -c <<"EOL"
10200ec22543841d9d1c23e0aed4e5e9 libogg-1.1.4.tar.gz
EOL
PACKAGE="libvorbis-1.2.3"
cd $DESTDIR
-[[ ! -f $PACKAGE.tar.gz ]] && (wget "http://downloads.xiph.org/releases/vorbis/$PACKAGE.tar.gz" || die "downloading $PACKAGE")
+test ! -f $PACKAGE.tar.gz && (wget "http://downloads.xiph.org/releases/vorbis/$PACKAGE.tar.gz" || die "downloading $PACKAGE")
(md5sum -c <<"EOL"
5aa77f55c0e0aab8eb8ed982335daac8 libvorbis-1.2.3.tar.gz
EOL
PACKAGE="openal-soft-1.11.753-bin"
cd $DESTDIR
-[[ ! -f $PACKAGE.zip ]] && (wget "http://kcat.strangesoft.net/$PACKAGE.zip" || die "downloading $PACKAGE")
+test ! -f $PACKAGE.zip && (wget "http://kcat.strangesoft.net/$PACKAGE.zip" || die "downloading $PACKAGE")
(md5sum -c <<"EOL"
20747ce5ca0f902ae082fef15d7b41a5 openal-soft-1.11.753-bin.zip
EOL
PACKAGE="zlib123-dll"
cd $DESTDIR
-[[ ! -f $PACKAGE.zip ]] && (wget "http://www.zlib.net/$PACKAGE.zip" || die "downloading $PACKAGE")
+test ! -f $PACKAGE.zip && (wget "http://www.zlib.net/$PACKAGE.zip" || die "downloading $PACKAGE")
(md5sum -c <<"EOL"
cc7fa97f9c19386bb701acc79d0abbca zlib123-dll.zip
EOL
PACKAGE="libpng-1.4.1"
cd $DESTDIR
-[[ ! -f $PACKAGE.tar.gz ]] && (wget "http://prdownloads.sourceforge.net/libpng/$PACKAGE.tar.gz?download" || die "downloading $PACKAGE")
+test ! -f $PACKAGE.tar.gz && (wget "http://prdownloads.sourceforge.net/libpng/$PACKAGE.tar.gz?download" || die "downloading $PACKAGE")
(md5sum -c <<"EOL"
fa0b2a84733463f90d3ac9f43ccafabc libpng-1.4.1.tar.gz
EOL
PACKAGE="lua-5.1.4"
cd $DESTDIR
-[[ ! -f $PACKAGE.tar.gz ]] && (wget "http://www.lua.org/ftp/$PACKAGE.tar.gz" || die "downloading $PACKAGE")
+test ! -f $PACKAGE.tar.gz && (wget "http://www.lua.org/ftp/$PACKAGE.tar.gz" || die "downloading $PACKAGE")
(md5sum -c <<"EOL"
d0870f2de55d59c1c8419f36e8fac150 lua-5.1.4.tar.gz
EOL
# What to install.
-TO_BIN= lua luac
-+TO_BIN= lua.exe luac.exe
++TO_BIN= lua.exe luac.exe lua51.dll
TO_INC= lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp
-TO_LIB= liblua.a
+TO_LIB= liblua.a liblua.dll.a
--- /dev/null
+#!/bin/sh
+
+#
+# Yoink
+# Run this script to create a portable win32 package.
+#
+
+function showhelp()
+{
+ echo "Create a portable win32 package or installer."
+ echo "Usage: $0 [-h] [-i makensis] [-s strip] -d assets -V version -p prefix"
+ echo ""
+ echo " -d Specify the game assets to be included."
+ echo " -h Show this help an exit."
+ echo " -i To make an installer, specify the makensis program."
+ echo " -V Specify the version of the program to be packaged"
+ echo " -s To strip the binaries, specify the strip program."
+ echo " -p Specify the path to your toolchain installation."
+}
+
+while getopts ":V:hd:i:p:s:" opt
+do
+ case $opt in
+ V)
+ VERSION="$OPTARG"
+ ;;
+ d)
+ ASSETS="$OPTARG"
+ ;;
+ h)
+ showhelp
+ exit 0
+ ;;
+ i)
+ MAKENSIS="$OPTARG"
+ ;;
+ p)
+ PREFIX="$OPTARG"
+ ;;
+ s)
+ STRIP="$OPTARG"
+ ;;
+ \?)
+ echo "Invalid option: -$OPTARG" >&2
+ showhelp
+ exit 1
+ ;;
+ esac
+done
+
+if test "x$ASSETS" = x || test "x$VERSION" = x || test "x$PREFIX" = x
+then
+ showhelp
+ exit 1
+fi
+
+function die()
+{
+ rm -rf "$BUILD"
+ echo "die:" $@
+ exit 1
+}
+
+ROOT="$PWD"
+BUILD="$PWD/tmp-$$"
+NAME="yoink-$VERSION"
+ARCHIVE="$BUILD/$NAME"
+INSTALLER_SCRIPT="$ROOT/win32/yoink.nsi"
+
+MAN2HTML="$ROOT/doc/man2html.sh"
+UNIX2DOS="$ROOT/win32/unix2dos.sh"
+
+DLLS="libogg-0 libpng14-14 libvorbis-0 libvorbisfile-3 lua51 OpenAL32 SDL zlib1"
+
+
+if test ! -f "src/version.c"
+then
+ echo "Run the script from the repository root directory."
+ exit 1
+fi
+
+if ! mkdir "$BUILD"
+then
+ "The temp directory $BUILD could not be created."
+ exit 1
+fi
+mkdir -p "$ARCHIVE"
+
+
+cp -f "$ROOT/src/yoink.exe" "$ARCHIVE" || die "copying yoink.exe"
+test "x$STRIP" != x && "$STRIP" "$ARCHIVE/yoink.exe"
+
+for dll in $DLLS
+do
+ cp -f "$PREFIX/bin/$dll.dll" "$ARCHIVE" || die "copying $dll"
+ test "x$STRIP" != x && "$STRIP" "$ARCHIVE/$dll.dll"
+done
+
+for asset in $ASSETS
+do
+ cp -f --parents "data/$asset" "$ARCHIVE"
+done
+
+for doc in AUTHORS ChangeLog COPYING README TODO
+do
+ "$UNIX2DOS" "$doc" "$ARCHIVE/$doc.txt" || die "unix2dos $doc"
+done
+
+"$MAN2HTML" -f -o "$ARCHIVE/Manual.html"
+"$UNIX2DOS" "$ARCHIVE/Manual.html"
+
+cp -rf "$ROOT/doc/licenses" "$ARCHIVE" || die "copying doc/licenses"
+cd "$ARCHIVE/licenses"
+for license in $(ls)
+do
+ (mv "$license" "$license.txt" && "$UNIX2DOS" "$license.txt") \
+ || die "moving and unix2dos $license"
+done
+cd "$ROOT"
+
+
+if test "x$MAKENSIS" = x
+then
+# build the portable archive
+ cd "$BUILD"
+ zip -r $NAME.zip $NAME || die "zipping portable archive"
+ cd "$ROOT"
+ mv "$BUILD/$NAME.zip" .
+ echo "Done! Package saved to $NAME.zip."
+else
+# build an installer
+ cd "$BULID"
+ "$MAKENSIS" "$INSTALLER_SCRIPT" \
+ -DINSTALLFILES="$NAME" -DVERSION="$VERSION" \
+ || die "running '$MAKENSIS'"
+ cd "$ROOT"
+ mv "$BUILD/$NAME.exe" .
+ echo "Done! Installer saved to $NAME.exe."
+fi
+
+
+rm -rf "$BUILD"
+
+++ /dev/null
-#!/bin/sh
-
-#
-# Yoink
-# Run this script to create a win32 installer.
-# This was blatantly yoinked and adapted from the Wormux Project.
-#
-
-# Paths
-SCRIPT="$PWD/yoink.nsi"
-BUILD_DIR="$PWD/build"
-ROOT_DIR="$PWD/.."
-
-# Programs
-MAKENSIS="@MAKENSIS@"
-STRIP="@STRIP@"
-UNIX2DOS="$ROOT_DIR/tools/unix2dos"
-
-# DLL dependencies
-DLLS="libogg-0 libpng14-14 libvorbis-0 libvorbisfile-3 lua51 OpenAL32 SDL zlib1"
-
-# Prepare
-rm -rf "$BUILD_DIR"
-mkdir -p "$BUILD_DIR"
-
-cp -f "$ROOT_DIR/src/yoink.exe" "$BUILD_DIR"
-#"${STRIP:-strip}" "$BUILD_DIR/yoink.exe"
-
-for dll in $DLLS
-do
- cp -f "@prefix@/bin/$dll.dll" "$BUILD_DIR"
- #"${STRIP:-strip}" "BUILD_DIR/$dll.dll"
-done
-
-cd "$ROOT_DIR"
-for asset in @DATA_FILES@
-do
- cp -f --parents "data/$asset" "$BUILD_DIR"
-done
-
-cd "$ROOT_DIR"
-for doc in AUTHORS ChangeLog COPYING README TODO
-do
- "$UNIX2DOS" "$doc" "$BUILD_DIR/$doc.txt"
-done
-
-cd "$ROOT_DIR/doc"
-cp -rf licenses "$BUILD_DIR"
-
-cd "$BUILD_DIR/licenses"
-for license in $(ls)
-do
- mv "$license" "$license.txt"
- "$UNIX2DOS" "$license.txt"
-done
-
-
-#
-# Compile the installer and cleanup.
-#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-if ! "${MAKENSIS:-makensis}" "$SCRIPT"
-then
- echo "makensis failed, aborting..."
- exit 1
-fi
-
-#rm -rf "$BUILD_DIR"
-
#!/bin/sh
+#
+# Yoink
# An implementation of unix2dos using sed.
-# Written by Charles McGarvey; released into the public domain.
+#
if [ -f "$1" ];
then
;Name and file
Name "Yoink"
- OutFile "../yoinksetup-@VERSION@.exe"
+ OutFile "yoinksetup-$VERSION.exe"
SetCompressor /SOLID lzma
;Default installation folder
SetOutPath "$INSTDIR"
;ADD YOUR OWN FILES HERE...
- File /r "build/*"
+ File /r "$INSTALLFILES/*"
;Store installation folder
WriteRegStr HKCU "Software\Yoink" "" $INSTDIR
CreateShortCut "$SMPROGRAMS\Yoink\Uninstall.lnk" "$INSTDIR\uninstall.exe"
WriteRegStr HKCU "Software\Games\Yoink" "" "$INSTDIR"
- WriteRegStr HKCU "Software\Games\Yoink" "Version" "@VERSION@"
+ WriteRegStr HKCU "Software\Games\Yoink" "Version" "$VERSION"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Yoink" "DisplayName" "Yoink"
- WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Yoink" "DisplayVersion" "@VERSION@"
+ WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Yoink" "DisplayVersion" "$VERSION"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Yoink" "UninstallString" "$INSTDIR\uninstall.exe"
SectionEnd