#!/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\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\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