@@ -52,6 +52,10 @@ EXTENSION="orp"
5252SAVE_FILE=" ${PRODUCTNAME} .${EXTENSION} "
5353count=1
5454
55+ # ############################################################
56+ # Build file list for files in the working path #
57+ # ############################################################
58+
5559for file in " $WORKING_PATH " /* ;
5660do
5761 filename=$( basename " $file " )
6064 EXE_ID=${PRODUCTNAME} 00
6165 EXE_FILE=${filename}
6266 # Add special entry to files list
63- FILES=" $FILES \t\t\t\t\t <File Id='${EXE_ID} ' Source='${WORKING_PATH}${filename} '/>\n"
67+ FILES=" $FILES <File Id='${EXE_ID} ' Source='${WORKING_PATH}${filename} '/>\n"
6468 elif [ -d " $file " ] ; then
6569 # If this is a directory then we need to add another component
66- COMPONENTS=" ${COMPONENTS} \t\t\t <ComponentRef Id='${filename} Files'/>\n"
67- TEMP=" \t\t\t\t <Directory Id='${filename} ' Name='${filename} '>\n\t\t\t\t\t <Component Id='${filename} Files' Guid='" $( uuidgen -t | awk ' { print toupper($0) }' ) " '>\n"
70+ COMPONENTS=" ${COMPONENTS} <ComponentRef Id='${filename} Files'/>\n"
71+ TEMP=" <Directory Id='${filename} ' Name='${filename} '>\n <Component Id='${filename} Files' Guid='" $( uuidgen -t | awk ' { print toupper($0) }' ) " '>\n"
6872 for file2 in " $file " /* ;
6973 do
7074 filename2=$( basename " $file2 " )
71- TEMP=" $TEMP \t\t\t\t\t\t <File Id='${PRODUCTNAME}${count} ' Source='${WORKING_PATH}${filename} /${filename2} '/>\n"
75+ TEMP=" $TEMP <File Id='${PRODUCTNAME}${count} ' Source='${WORKING_PATH}${filename} /${filename2} '/>\n"
7276 count=$(( count+ 1 ))
7377 done
74- DIRECTORIES=" $DIRECTORIES$TEMP \t\t\t\t\t </Component>\n\t\t\t\t </Directory>\n"
78+ DIRECTORIES=" $DIRECTORIES$TEMP </Component>\n </Directory>\n"
7579 else
7680 # Any other file to files list
77- FILES=" $FILES \t\t\t\t\t <File Id='${PRODUCTNAME}${count} ' Source='${WORKING_PATH}${filename} '/>\n"
81+ FILES=" $FILES <File Id='${PRODUCTNAME}${count} ' Source='${WORKING_PATH}${filename} '/>\n"
7882 count=$(( count+ 1 ))
7983 fi
8084done
8185
82- echo -e " Building XML:\t" $XMLOUTFILE
83-
84- XML_PACKAGE=" \t<Package Keywords='Installer' Description='${PRODUCTNAME} Installer'\n\t\tComments=\" ${PRODUCTCOMMENT} \" Manufacturer='OpenRGB'\n\t\tInstallerVersion='200' Languages='1033' Compressed='yes' SummaryCodepage='1252' Platform='x64'/>\n"
85- XML_MEDIA=" \t<Media Id='1' Cabinet='${PRODUCTNAME,,} .cab' EmbedCab='yes'/>\n"
86- XML_CONDITIONS=" \t<Condition Message='This package supports Windows 64bit Only'>VersionNT64</Condition>\n"
87- XML_ACTION_RUNAS_ADMIN=" \t<CustomAction Id='LaunchOpenRGBAdmin' FileKey='${EXE_ID} ' ExeCommand='${EXE_FILE} --loglevel 1 --nodetect' Execute='deferred' Return='asyncNoWait' Impersonate='no'/>\n"
88- XML_ACTION_FIRSTRUN=" \t<CustomAction Id='LaunchOpenRGB' FileKey='${EXE_ID} ' ExeCommand='--gui --loglevel 6' Execute='immediate' Return='asyncNoWait' Impersonate='yes'/>\n"
89- XML_ICON=" \t<Icon Id='OpenRGBIcon' SourceFile='${ICONFILE} '/>\n"
90- XML_PROPERTY=" \t<Property Id='ARPPRODUCTICON' Value='OpenRGBIcon'/>\n\t<Property Id='ARPURLINFOABOUT' Value='https://www.openrgb.org'/>\n"
91- XML_ACTIONS_EXECUTE=" \t<InstallExecuteSequence>\n\t\t<Custom Action='LaunchOpenRGBAdmin' After='InstallFiles'>NOT Installed</Custom>\n\t\t<Custom Action='LaunchOpenRGB' After='InstallFinalize'>NOT Installed</Custom>\n\t</InstallExecuteSequence>\n"
92- XML_WIX_UI=" \t<Property Id='WIXUI_INSTALLDIR' Value='INSTALLDIR' />\n\t<UIRef Id='WixUI_InstallDir'/>\n\t<UIRef Id='WixUI_ErrorProgressText'/>\n\t<WixVariable Id='WixUILicenseRtf' Value='${LICENSEFILE} '/>\n\t<WixVariable Id='WixUIBannerBmp' Value='${BANNERIMAGE} '/>\n\t<WixVariable Id='WixUIDialogBmp' Value='${DIALOGBACKGROUND} '/>\n"
93- XML_MAJOR_UPGRADE=" \t<MajorUpgrade Schedule='afterInstallInitialize' AllowDowngrades='yes'/>\n"
94- 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 "
95-
96- XML_STARTMENU=" \t\t<Directory Id='ProgramMenuFolder' Name='Programs'>\n\t\t\t<Component Id='ProgramMenuShortcut' Guid='" $( uuidgen -t | awk ' { print toupper($0) }' ) " '>\n\t\t\t\t<Shortcut Id='startmenu${PRODUCTNAME} ' Directory='ProgramMenuFolder' Name='${PRODUCTNAME} ' Target='[#${EXE_ID} ]' WorkingDirectory='INSTALLDIR' Advertise='no'/>\n\t\t\t\t<RemoveFolder Id='ProgramMenuShortcut' On='uninstall'/>\n\t\t\t\t<RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' Type='string' Value='' KeyPath='yes'/>\n\t\t\t</Component>\n\t\t</Directory>\n"
97- XML_ASSOCIATE_FILE=" \t\t\t\t\t<ProgId Id='${SAVE_FILE} ' Description='${PRODUCTNAME} Profile'>\n\t\t\t\t\t\t<Extension Id='${EXTENSION} ' ContentType='application/${EXTENSION} '>\n\t\t\t\t\t\t<Verb Id='open' Command='Open' TargetFile='${EXE_ID} ' Argument='-p \" %1\" ' />\n\t\t\t\t\t\t</Extension>\n\t\t\t\t\t</ProgId>\n"
98- XML_DIRECTORIES=" \t<Directory Id='TARGETDIR' Name='SourceDir'>\n\t\t<Directory Id='ProgramFiles64Folder'>\n\t\t\t<Directory Id='INSTALLDIR' Name='${PRODUCTNAME} '>\n\t\t\t\t<Component Id='${PRODUCTNAME} Files' Guid='" $( uuidgen -t | awk ' { print toupper($0) }' ) " '>\n$FILES \n$XML_SHORTCUT \n$XML_ASSOCIATE_FILE \t\t\t\t</Component>\n$DIRECTORIES \t\t\t</Directory>\n\t\t</Directory>\n$XML_STARTMENU \t</Directory>\n"
99-
100- XML_COMPONENTS=" \t<Feature Id='Complete' Title='${PRODUCTNAME} ' Description='Install all ${PRODUCTNAME} files.' Display='expand' Level='1' ConfigurableDirectory='INSTALLDIR'>\n\t\t<Feature Id='${PRODUCTNAME} Complete' Title='${PRODUCTNAME} ' Description='The complete package.' Level='1' AllowAdvertise='no' InstallDefault='local'>\n\t\t\t<ComponentRef Id='${PRODUCTNAME} Files'/>\n$COMPONENTS \t\t\t<ComponentRef Id='ProgramMenuShortcut'/>\n\t\t</Feature>\n\t</Feature>\n"
101- XML_DATA=" $XML_DIRECTORIES $XML_COMPONENTS "
102-
103- # Wipe out any previous XMLOUTFILE and add the header
104- XML_HEADER=" <?xml version='1.0' encoding='windows-1252'?>\n<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>\n"
105- XML_PRODUCT=" \t<Product Name='${PRODUCTNAME} ' Manufacturer='${VENDOR} '\n\t\tId='*'\n\t\tUpgradeCode='" ${UPGRADECODE} " '\n\t\tLanguage='1033' Codepage='1252' Version='${VERSION} '>\n$XML_METADATA \n$XML_DATA \n\t</Product>\n</Wix>"
106-
107- echo -e $XML_HEADER $XML_PRODUCT > $XMLOUTFILE
108- echo -e " \t...Done!\n\n"
109-
86+ # ############################################################
87+ # Create the Wix XML file #
88+ # Set IFS to the empty string to allow arbitrary spacing #
89+ # within the XML_FILE variable, then set it back to a #
90+ # space character after we print the XML file #
91+ # ############################################################
92+ IFS=" "
93+ XML_FILE=" "
94+
95+ XML_FILE+=" <?xml version='1.0' encoding='windows-1252'?>\r\n"
96+ XML_FILE+=" <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>\r\n"
97+ XML_FILE+=" <Product Name='${PRODUCTNAME} ' Manufacturer='${VENDOR} '\r\n"
98+ XML_FILE+=" Id='*'\r\n"
99+ XML_FILE+=" UpgradeCode='" ${UPGRADECODE} " '\r\n"
100+ XML_FILE+=" Language='1033' Codepage='1252' Version='${VERSION} '>\r\n"
101+ XML_FILE+=" <Package Keywords='Installer' Description='${PRODUCTNAME} Installer'\r\n"
102+ XML_FILE+=" Comments=\" ${PRODUCTCOMMENT} \" Manufacturer='OpenRGB'\r\n"
103+ XML_FILE+=" InstallerVersion='200' Languages='1033' Compressed='yes' SummaryCodepage='1252' Platform='x64'/>\r\n"
104+ XML_FILE+=" <Media Id='1' Cabinet='${PRODUCTNAME,,} .cab' EmbedCab='yes'/>\r\n"
105+ XML_FILE+=" <Condition Message='This package supports Windows 64bit Only'>VersionNT64</Condition>\r\n"
106+ XML_FILE+=" <MajorUpgrade Schedule='afterInstallInitialize' AllowDowngrades='yes'/>\r\n"
107+ XML_FILE+=" <CustomAction Id='LaunchOpenRGBAdmin' FileKey='${EXE_ID} ' ExeCommand='${EXE_FILE} --loglevel 1 --nodetect' Execute='deferred' Return='asyncNoWait' Impersonate='no'/>\r\n"
108+ XML_FILE+=" <CustomAction Id='LaunchOpenRGB' FileKey='${EXE_ID} ' ExeCommand='--gui --loglevel 6' Execute='immediate' Return='asyncNoWait' Impersonate='yes'/>\r\n"
109+ XML_FILE+=" <Icon Id='OpenRGBIcon' SourceFile='${ICONFILE} '/>\r\n"
110+ XML_FILE+=" <Property Id='ARPPRODUCTICON' Value='OpenRGBIcon'/>\r\n"
111+ XML_FILE+=" <Property Id='ARPURLINFOABOUT' Value='https://www.openrgb.org'/>\r\n"
112+ XML_FILE+=" <InstallExecuteSequence>\r\n"
113+ XML_FILE+=" <Custom Action='LaunchOpenRGBAdmin' After='InstallFiles'>NOT Installed</Custom>\r\n"
114+ XML_FILE+=" <Custom Action='LaunchOpenRGB' After='InstallFinalize'>NOT Installed</Custom>\r\n"
115+ XML_FILE+=" </InstallExecuteSequence>\r\n"
116+ XML_FILE+=" <Property Id='WIXUI_INSTALLDIR' Value='INSTALLDIR'/>\r\n"
117+ XML_FILE+=" <UIRef Id='WixUI_InstallDir'/>\r\n"
118+ XML_FILE+=" <UIRef Id='WixUI_ErrorProgressText'/>\r\n"
119+ XML_FILE+=" <WixVariable Id='WixUILicenseRtf' Value='${LICENSEFILE} '/>\r\n"
120+ XML_FILE+=" <WixVariable Id='WixUIBannerBmp' Value='${BANNERIMAGE} '/>\r\n"
121+ XML_FILE+=" <WixVariable Id='WixUIDialogBmp' Value='${DIALOGBACKGROUND} '/>\r\n"
122+ XML_FILE+=" \r\n"
123+ XML_FILE+=" <Directory Id='TARGETDIR' Name='SourceDir'>\r\n"
124+ XML_FILE+=" <Directory Id='ProgramFiles64Folder'>\r\n"
125+ XML_FILE+=" <Directory Id='INSTALLDIR' Name='${PRODUCTNAME} '>\r\n"
126+ XML_FILE+=" <Component Id='${PRODUCTNAME} Files' Guid='" $( uuidgen -t | awk ' { print toupper($0) }' ) " '>\r\n"
127+ XML_FILE+=" ${FILES} \r\n"
128+ XML_FILE+=" <ProgId Id='${SAVE_FILE} ' Description='${PRODUCTNAME} Profile'>\r\n"
129+ XML_FILE+=" <Extension Id='${EXTENSION} ' ContentType='application/${EXTENSION} '>\r\n"
130+ XML_FILE+=" <Verb Id='open' Command='Open' TargetFile='${EXE_ID} ' Argument='-p \" %1\" ' />\r\n"
131+ XML_FILE+=" </Extension>\r\n"
132+ XML_FILE+=" </ProgId>\r\n"
133+ XML_FILE+=" </Component>\r\n"
134+ XML_FILE+=" ${DIRECTORIES} \r\n"
135+ XML_FILE+=" </Directory>\r\n"
136+ XML_FILE+=" </Directory>\r\n"
137+ XML_FILE+=" <Directory Id='ProgramMenuFolder' Name='Programs'>\r\n"
138+ XML_FILE+=" <Component Id='ProgramMenuShortcut' Guid='" $( uuidgen -t | awk ' { print toupper($0) }' ) " '>\r\n"
139+ XML_FILE+=" <Shortcut Id='startmenu${PRODUCTNAME} ' Directory='ProgramMenuFolder' Name='${PRODUCTNAME} ' Target='[#${EXE_ID} ]' WorkingDirectory='INSTALLDIR' Advertise='no'/>\r\n"
140+ XML_FILE+=" <RemoveFolder Id='ProgramMenuShortcut' On='uninstall'/>\r\n"
141+ XML_FILE+=" <RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' Type='string' Value='' KeyPath='yes'/>\r\n"
142+ XML_FILE+=" </Component>\r\n"
143+ XML_FILE+=" </Directory>\r\n"
144+ XML_FILE+=" </Directory>\r\n"
145+ XML_FILE+=" <Feature Id='Complete' Title='${PRODUCTNAME} ' Description='Install all ${PRODUCTNAME} files.' Display='expand' Level='1' ConfigurableDirectory='INSTALLDIR'>\r\n"
146+ XML_FILE+=" <Feature Id='${PRODUCTNAME} Complete' Title='${PRODUCTNAME} ' Description='The complete package.' Level='1' AllowAdvertise='no' InstallDefault='local'>\r\n"
147+ XML_FILE+=" <ComponentRef Id='${PRODUCTNAME} Files'/>\r\n"
148+ XML_FILE+=" ${COMPONENTS} \r\n"
149+ XML_FILE+=" <ComponentRef Id='ProgramMenuShortcut'/>\r\n"
150+ XML_FILE+=" </Feature>\r\n"
151+ XML_FILE+=" </Feature>\r\n"
152+ XML_FILE+=" </Product>\r\n"
153+ XML_FILE+=" </Wix>"
154+
155+ echo -e $XML_FILE > $XMLOUTFILE
156+ IFS=" "
157+
158+ # ############################################################
159+ # Print the XML for debugging #
160+ # ############################################################
110161cat $XMLOUTFILE
111162
112- # Once the XML file manifest is created create the package
163+ # ############################################################
164+ # Once the XML file manifest is created, create the package #
165+ # ############################################################
113166candle -arch x64 ${PRODUCTNAME,,} .wxs
114167light -sval -ext WixUIExtension ${PRODUCTNAME,,} .wixobj -out ${PRODUCTNAME} _Windows_64.msi
0 commit comments