From 015b28c7d106262e3799f541179177fdd84698bd Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Sun, 16 Feb 2025 18:26:24 -0600 Subject: [PATCH] Clean up build-msi.sh script and make XML generation more readable --- scripts/build-msi.sh | 117 +++++++++++++++++++++++++++++++------------ 1 file changed, 85 insertions(+), 32 deletions(-) diff --git a/scripts/build-msi.sh b/scripts/build-msi.sh index 837e2ce2..d7e1005b 100755 --- a/scripts/build-msi.sh +++ b/scripts/build-msi.sh @@ -52,6 +52,10 @@ EXTENSION="orp" SAVE_FILE="${PRODUCTNAME}.${EXTENSION}" count=1 +############################################################# +# Build file list for files in the working path # +############################################################# + for file in "$WORKING_PATH"/*; do filename=$(basename "$file") @@ -60,55 +64,104 @@ do EXE_ID=${PRODUCTNAME}00 EXE_FILE=${filename} #Add special entry to files list - FILES="$FILES\t\t\t\t\t\n" + FILES="$FILES \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" + COMPONENTS="${COMPONENTS} \n" + TEMP=" \n \n" for file2 in "$file"/*; do filename2=$(basename "$file2") - TEMP="$TEMP\t\t\t\t\t\t\n" + TEMP="$TEMP \n" count=$((count+1)) done - DIRECTORIES="$DIRECTORIES$TEMP\t\t\t\t\t\n\t\t\t\t\n" + DIRECTORIES="$DIRECTORIES$TEMP \n \n" else #Any other file to files list - FILES="$FILES\t\t\t\t\t\n" + FILES="$FILES \n" count=$((count+1)) fi done -echo -e "Building XML:\t" $XMLOUTFILE +############################################################# +# Create the Wix XML file # +# Set IFS to the empty string to allow arbitrary spacing # +# within the XML_FILE variable, then set it back to a # +# space character after we print the XML file # +############################################################# +IFS="" +XML_FILE="" -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_FILE+="\r\n" +XML_FILE+="\r\n" +XML_FILE+=" \r\n" +XML_FILE+="${FILES}\r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+="${DIRECTORIES}\r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+="${COMPONENTS}\r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+=" \r\n" +XML_FILE+="" -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" +echo -e $XML_FILE > $XMLOUTFILE +IFS=" " +############################################################# +# Print the XML for debugging # +############################################################# cat $XMLOUTFILE -#Once the XML file manifest is created create the package +############################################################# +# 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