diff --git a/server/datastore/mysql/software_installers.go b/server/datastore/mysql/software_installers.go index 40bc6a25e9..ba340dd930 100644 --- a/server/datastore/mysql/software_installers.go +++ b/server/datastore/mysql/software_installers.go @@ -222,6 +222,7 @@ SELECT si.install_script_content_id, si.pre_install_query, si.post_install_script_content_id, + si.uninstall_script_content_id, si.uploaded_at, COALESCE(st.name, '') AS software_title, si.platform @@ -246,9 +247,10 @@ WHERE func (ds *Datastore) GetSoftwareInstallerMetadataByTeamAndTitleID(ctx context.Context, teamID *uint, titleID uint, withScriptContents bool) (*fleet.SoftwareInstaller, error) { var scriptContentsSelect, scriptContentsFrom string if withScriptContents { - scriptContentsSelect = ` , inst.contents AS install_script, COALESCE(pisnt.contents, '') AS post_install_script ` + scriptContentsSelect = ` , inst.contents AS install_script, COALESCE(pinst.contents, '') AS post_install_script, uninst.contents AS uninstall_script ` scriptContentsFrom = ` LEFT OUTER JOIN script_contents inst ON inst.id = si.install_script_content_id - LEFT OUTER JOIN script_contents pisnt ON pisnt.id = si.post_install_script_content_id ` + LEFT OUTER JOIN script_contents pinst ON pinst.id = si.post_install_script_content_id + LEFT OUTER JOIN script_contents uninst ON uninst.id = si.uninstall_script_content_id` } query := fmt.Sprintf(` @@ -262,6 +264,7 @@ SELECT si.install_script_content_id, si.pre_install_query, si.post_install_script_content_id, + si.uninstall_script_content_id, si.uploaded_at, si.uninstall_script_content_id, si.self_service, diff --git a/server/fleet/software_installer.go b/server/fleet/software_installer.go index dab776e3ea..2a03ede273 100644 --- a/server/fleet/software_installer.go +++ b/server/fleet/software_installer.go @@ -95,6 +95,8 @@ type SoftwareInstaller struct { PreInstallQuery string `json:"pre_install_query" db:"pre_install_query"` // PostInstallScript is the script to run after installing the software package. PostInstallScript string `json:"post_install_script" db:"post_install_script"` + // UninstallScript is the script to run to uninstall the software package. + UninstallScript string `json:"uninstall_script" db:"uninstall_script"` // PostInstallScriptContentID is the ID of the post-install script content. PostInstallScriptContentID *uint `json:"-" db:"post_install_script_content_id"` // StorageID is the unique identifier for the software package in the software installer store.