Skip to content

Commit 6c8c48d

Browse files
Add option for installing OpenRGB as a service in Wix installer
1 parent f8895af commit 6c8c48d

1 file changed

Lines changed: 49 additions & 10 deletions

File tree

scripts/build-msi.sh

Lines changed: 49 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,13 @@ do
6060
if [ $filename == "${PRODUCTNAME}.exe" ] ; then
6161
#If this is the executable treat as a special case as we need the reference for later
6262
EXE_ID=${PRODUCTNAME}00
63-
EXE_FILE=${filename}
63+
SVC_ID=${PRODUCTNAME}00_SVC
6464
#Add special entry to files list
65-
FILES="$FILES <File Id='${EXE_ID}' Source='${WORKING_PATH}${filename}' KeyPath='yes'/>\n"
65+
EXE_FILE=" <File Id='${EXE_ID}' Source='${WORKING_PATH}${filename}' KeyPath='yes'/>\n"
66+
SVC_FILE=" <File Id='${SVC_ID}' Source='${WORKING_PATH}${filename}' KeyPath='yes'/>\n"
6667
elif [ -d "$file" ] ; then
6768
#If this is a directory then we need to add another component
68-
COMPONENTS="${COMPONENTS} <ComponentRef Id='${filename}Files'/>\n"
69+
COMPONENTS="${COMPONENTS} <ComponentRef Id='${filename}Files'/>\n"
6970
TEMP=" <Directory Id='${filename}' Name='${filename}'>\n <Component Id='${filename}Files' Guid='"$(uuidgen -t | awk '{ print toupper($0) }')"'>\n"
7071
for file2 in "$file"/*;
7172
do
@@ -106,17 +107,54 @@ XML_FILE+=" <Icon Id='OpenRGBIcon' SourceFile='${ICONFILE}'/>\r\n"
106107
XML_FILE+=" <Property Id='ARPPRODUCTICON' Value='OpenRGBIcon'/>\r\n"
107108
XML_FILE+=" <Property Id='ARPURLINFOABOUT' Value='https://www.openrgb.org'/>\r\n"
108109
XML_FILE+=" <Property Id='WIXUI_INSTALLDIR' Value='INSTALLDIR'/>\r\n"
109-
XML_FILE+=" <UIRef Id='WixUI_InstallDir'/>\r\n"
110-
XML_FILE+=" <UIRef Id='WixUI_ErrorProgressText'/>\r\n"
111110
XML_FILE+=" <WixVariable Id='WixUILicenseRtf' Value='${LICENSEFILE}'/>\r\n"
112111
XML_FILE+=" <WixVariable Id='WixUIBannerBmp' Value='${BANNERIMAGE}'/>\r\n"
113112
XML_FILE+=" <WixVariable Id='WixUIDialogBmp' Value='${DIALOGBACKGROUND}'/>\r\n"
114113
XML_FILE+="\r\n"
114+
XML_FILE+=" <UI>\r\n"
115+
XML_FILE+=" <UIRef Id='WixUI_InstallDir'/>\r\n"
116+
XML_FILE+=" <UIRef Id='WixUI_ErrorProgressText'/>\r\n"
117+
XML_FILE+="\r\n"
118+
XML_FILE+=" <Dialog Id='ServiceDialog' Width='370' Height='270' Title='!(loc.InstallDirDlg_Title)'>\r\n"
119+
XML_FILE+=" <Control Id='Next' Type='PushButton' X='236' Y='243' Width='56' Height='17' Default='yes' Text='!(loc.WixUINext)' />\r\n"
120+
XML_FILE+=" <Control Id='Back' Type='PushButton' X='180' Y='243' Width='56' Height='17' Text='!(loc.WixUIBack)' />\r\n"
121+
XML_FILE+=" <Control Id='Cancel' Type='PushButton' X='304' Y='243' Width='56' Height='17' Cancel='yes' Text='!(loc.WixUICancel)'>\r\n"
122+
XML_FILE+=" <Publish Event='SpawnDialog' Value='CancelDlg' />\r\n"
123+
XML_FILE+=" </Control>\r\n"
124+
XML_FILE+="\r\n"
125+
XML_FILE+=" <Control Id='Description' Type='Text' X='25' Y='23' Width='280' Height='15' Transparent='yes' NoPrefix='yes' Text='Choose whether to register ${PRODUCTNAME} as a system service.' />\r\n"
126+
XML_FILE+=" <Control Id='Title' Type='Text' X='15' Y='6' Width='200' Height='15' Transparent='yes' NoPrefix='yes' Text='${PRODUCTNAME} Service' />\r\n"
127+
XML_FILE+=" <Control Id='BannerBitmap' Type='Bitmap' X='0' Y='0' Width='370' Height='44' TabSkip='no' Text='!(loc.InstallDirDlgBannerBitmap)' />\r\n"
128+
XML_FILE+=" <Control Id='BannerLine' Type='Line' X='0' Y='44' Width='373' Height='0' />\r\n"
129+
XML_FILE+=" <Control Id='BottomLine' Type='Line' X='0' Y='234' Width='373' Height='0' />\r\n"
130+
XML_FILE+="\r\n"
131+
XML_FILE+=" <Control Id='TypicalButton' Type='PushButton' X='40' Y='65' Width='200' Height='17' ToolTip='Does not register OpenRGB as a system service. Accessing certain devices will require running the application as administrator.' Default='yes' Text='Do not Install System Service (Default)'>\r\n"
132+
XML_FILE+=" <Publish Property='WixUI_InstallMode' Value='InstallTypical'>1</Publish>\r\n"
133+
XML_FILE+=" <Publish Event='SetInstallLevel' Value='1'>1</Publish>\r\n"
134+
XML_FILE+=" <Publish Event='NewDialog' Value='VerifyReadyDlg'>1</Publish>\r\n"
135+
XML_FILE+=" </Control>\r\n"
136+
XML_FILE+=" <Control Id='CompleteButton' Type='PushButton' X='40' Y='171' Width='200' Height='17' ToolTip='Registers OpenRGB system service, allowing access to devices which require administrator access without having to run the application as administrator.' Text='Install System Service'>\r\n"
137+
XML_FILE+=" <Publish Property='WixUI_InstallMode' Value='InstallComplete'>1</Publish>\r\n"
138+
XML_FILE+=" <Publish Event='SetInstallLevel' Value='2'>1</Publish>\r\n"
139+
XML_FILE+=" <Publish Event='NewDialog' Value='VerifyReadyDlg'>1</Publish>\r\n"
140+
XML_FILE+=" </Control>\r\n"
141+
XML_FILE+=" </Dialog>\r\n"
142+
XML_FILE+="\r\n"
143+
XML_FILE+=" <Publish Dialog='InstallDirDlg' Control='Next' Event='NewDialog' Value='ServiceDialog' Order='5'>WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID=\"1\"</Publish>\r\n"
144+
XML_FILE+=" <Publish Dialog='VerifyReadyDlg' Control='Back' Event='NewDialog' Value='ServiceDialog' Order='2'>1</Publish>\r\n"
145+
XML_FILE+=" <Publish Dialog='ServiceDialog' Control='Next' Event='NewDialog' Value='VerifyReadyDlg' Order='2'>1</Publish>\r\n"
146+
XML_FILE+=" <Publish Dialog='ServiceDialog' Control='Back' Event='NewDialog' Value='InstallDirDlg' Order='2'>1</Publish>\r\n"
147+
XML_FILE+=" </UI>\r\n"
148+
XML_FILE+="\r\n"
115149
XML_FILE+=" <Directory Id='TARGETDIR' Name='SourceDir'>\r\n"
116150
XML_FILE+=" <Directory Id='ProgramFiles64Folder'>\r\n"
117151
XML_FILE+=" <Directory Id='INSTALLDIR' Name='${PRODUCTNAME}'>\r\n"
118152
XML_FILE+=" <Component Id='${PRODUCTNAME}Files' Guid='"$(uuidgen -t | awk '{ print toupper($0) }')"'>\r\n"
153+
XML_FILE+="${EXE_FILE}\r\n"
119154
XML_FILE+="${FILES}\r\n"
155+
XML_FILE+=" </Component>\r\n"
156+
XML_FILE+=" <Component Id='${PRODUCTNAME}Service' Guid='"$(uuidgen -t | awk '{ print toupper($0) }')"'>\r\n"
157+
XML_FILE+="${SVC_FILE}\r\n"
120158
XML_FILE+=" <ServiceInstall Id='ServiceInstaller' Type='ownProcess' Name='OpenRGB' DisplayName='OpenRGB' Description='OpenRGB SDK Server' Start='auto' Account='[SERVICEACCOUNT]' Password='[SERVICEPASSWORD]' ErrorControl='normal'/>\r\n"
121159
XML_FILE+=" <ServiceControl Id='StartService' Start='install' Stop='both' Remove='uninstall' Name='OpenRGB' Wait='yes'/>\r\n"
122160
XML_FILE+=" </Component>\r\n"
@@ -131,12 +169,13 @@ XML_FILE+=" <RegistryValue Root='HKCU' Key='Software\[Manufac
131169
XML_FILE+=" </Component>\r\n"
132170
XML_FILE+=" </Directory>\r\n"
133171
XML_FILE+=" </Directory>\r\n"
134-
XML_FILE+=" <Feature Id='Complete' Title='${PRODUCTNAME}' Description='Install all ${PRODUCTNAME} files.' Display='expand' Level='1' ConfigurableDirectory='INSTALLDIR'>\r\n"
135-
XML_FILE+=" <Feature Id='${PRODUCTNAME}Complete' Title='${PRODUCTNAME}' Description='The complete package.' Level='1' AllowAdvertise='no' InstallDefault='local'>\r\n"
136-
XML_FILE+=" <ComponentRef Id='${PRODUCTNAME}Files'/>\r\n"
172+
XML_FILE+=" <Feature Id='${PRODUCTNAME}Application' Title='${PRODUCTNAME}' Description='Install the ${PRODUCTNAME} application files.' Level='1' AllowAdvertise='no' ConfigurableDirectory='INSTALLDIR' InstallDefault='local'>\r\n"
173+
XML_FILE+=" <ComponentRef Id='${PRODUCTNAME}Files'/>\r\n"
137174
XML_FILE+="${COMPONENTS}\r\n"
138-
XML_FILE+=" <ComponentRef Id='ProgramMenuShortcut'/>\r\n"
139-
XML_FILE+=" </Feature>\r\n"
175+
XML_FILE+=" <ComponentRef Id='ProgramMenuShortcut'/>\r\n"
176+
XML_FILE+=" </Feature>\r\n"
177+
XML_FILE+=" <Feature Id='${PRODUCTNAME}RegisterService' Title='${PRODUCTNAME}' Description='Register ${PRODUCTNAME} as a system service.' Display='expand' Level='2' ConfigurableDirectory='INSTALLDIR'>\r\n"
178+
XML_FILE+=" <ComponentRef Id='${PRODUCTNAME}Service'/>\r\n"
140179
XML_FILE+=" </Feature>\r\n"
141180
XML_FILE+=" </Product>\r\n"
142181
XML_FILE+="</Wix>"

0 commit comments

Comments
 (0)