#!/usr/bin/env bash
GITURL="https://gitlab.com/CalcProgrammer1/OpenRGB/-"
GITPARAM="?inline=false"
WEBSITE="www.openrgb.org"
ICONFILE="qt/OpenRGB.ico"
LICENSEFILE="scripts/License.rtf"
BANNERIMAGE="scripts/banner.bmp"
DIALOGBACKGROUND="scripts/dialog_background.bmp"
ZIP="/jobs/artifacts/master/download?job=Windows+64"
PROJECT_FILE="OpenRGB.pro"
PRODUCTID=$(uuidgen -n @url -N ${WEBSITE} --sha1 | awk '{ print toupper($0) }')
PRODUCTNAME="OpenRGB"
VENDOR=$PRODUCTNAME
PRODUCTCOMMENT="Open source RGB lighting control that doesn't depend on manufacturer software."
VERSION=$(qmake ${PROJECT_FILE} 2>&1 | grep VERSION_WIX | cut -d ':' -f 3 | tr -d ' ')
XMLOUTFILE=${PRODUCTNAME,,}".wxs"
echo -e "Zip URL:\t" $GITURL$ZIP
echo -e "Icon URL:\t" $GITURL$ICONFILE
echo -e "License URL:\t" $GITURL$LICENSEFILE
echo -e "Product UUID:\t" $PRODUCTID
echo -e "Product:\t" $PRODUCTNAME
echo -e "Vendor:\t\t" $VENDOR
echo -e "Version:\t" $VERSION
#Wix and / or Wine have issues with the mixed upper and lower case letters
WORKING_PATH="orgb/"
ZIP_PATH="OpenRGB Windows 64-bit/"
mv -T "${ZIP_PATH}" ${WORKING_PATH}
EXTENSION="orp"
SAVE_FILE="${PRODUCTNAME}.${EXTENSION}"
count=1
for file in "$WORKING_PATH"/*;
do
filename=$(basename "$file")
if [ $filename == "${PRODUCTNAME}.exe" ] ; then
#If this is the executable treat as a special case as we need the reference for later
EXE_ID=${PRODUCTNAME}00
EXE_FILE=${filename}
#Add special entry to files list
FILES="$FILES\t\t\t\t\t\n"
elif [ -d "$file" ] ; then
#If this is a directory then we need to add another component
COMPONENTS="${COMPONENTS}\t\t\t\n"
TEMP="\t\t\t\t\n\t\t\t\t\t\n"
for file2 in "$file"/*;
do
filename2=$(basename "$file2")
TEMP="$TEMP\t\t\t\t\t\t\n"
count=$((count+1))
done
DIRECTORIES="$DIRECTORIES$TEMP\t\t\t\t\t\n\t\t\t\t\n"
else
#Any other file to files list
FILES="$FILES\t\t\t\t\t\n"
count=$((count+1))
fi
done
echo -e "Building XML:\t" $XMLOUTFILE
XML_PACKAGE="\t\n"
XML_MEDIA="\t\n"
XML_CONDITIONS="\tVersionNT64\n"
XML_ACTION_RUNAS_ADMIN="\t\n"
XML_ACTION_FIRSTRUN="\t\n"
XML_ICON="\t\n"
XML_PROPERTY="\t\n\t\n"
XML_ACTIONS_EXECUTE="\t\n\t\tNOT Installed\n\t\tNOT Installed\n\t\n"
XML_WIX_UI="\t\n\t\n\t\n\t\n\t\n\t\n"
XML_MAJOR_UPGRADE="\t\n"
XML_METADATA="$XML_PACKAGE $XML_MEDIA $XML_CONDITIONS $XML_MAJOR_UPGRADE $XML_ACTION_RUNAS_ADMIN $XML_ACTION_FIRSTRUN $XML_ICON $XML_PROPERTY $XML_ACTIONS_EXECUTE $XML_WIX_UI"
XML_STARTMENU="\t\t\n"
XML_ASSOCIATE_FILE="\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n"
XML_DIRECTORIES="\t\n\t\t\n\t\t\t\n\t\t\t\t\n$FILES\n$XML_SHORTCUT\n$XML_ASSOCIATE_FILE\t\t\t\t\n$DIRECTORIES\t\t\t\n\t\t\n$XML_STARTMENU\t\n"
XML_COMPONENTS="\t\n\t\t\n\t\t\t\n$COMPONENTS\t\t\t\n\t\t\n\t\n"
XML_DATA="$XML_DIRECTORIES $XML_COMPONENTS"
#Wipe out any previous XMLOUTFILE and add the header
XML_HEADER="\n\n"
XML_PRODUCT="\t\n$XML_METADATA\n$XML_DATA\n\t\n"
echo -e $XML_HEADER $XML_PRODUCT > $XMLOUTFILE
echo -e "\t...Done!\n\n"
#Once the XML file manifest is created create the package
candle -arch x64 ${PRODUCTNAME,,}.wxs
light -sval -ext WixUIExtension ${PRODUCTNAME,,}.wixobj -out ${PRODUCTNAME}_Windows_64.msi