Some updates on Lacerte 2024 as well as inconsistencies encountered.
Our setup is our server F:\ Lacerte holds the Lacerte server portion ( folder setup24 etc.) G:\Lacerte holds the data and two remote desktops Server1 and Server2 have the workstation portion of Lacerte 2024 C:\apps\Lacerte\24tax
The info lacerte provides is lacking to say the least, even on the bottom, where it has "more technical details (select to expand)
Chris_White’s script works beautifully. I modified it so it does not look at the hostname because I only have 2 workstations in my environment, mainly the two remote desktop servers. Still, it is only to install the workstation portion. The thing is, we have to automate downloading of the updates and applying the server portion to the F:\Lacerte drive in my environment so that when we run the taxsetup.exe programmatically, it updates to the new version.
By using process explorer and monitoring the Intuit background updater I created these scripts.
All those commands were gleamed by using Process Explorer, selecting properties when the background updater program was running.
Powershell Script 1: Enables the Lacerte Bacgrround updater scheduler task and after the update is downloaded, disables it again. More info later on why I have it disabled.
The task name will be different for you. Under the task scheduler libary it is under subfolder Intuit_BU. It is a user that in Lacerte 2024 has Lacerte Update Trustee rights and also Admin rights in windows to Run the script. More info on that below.
Script1:
$taskName = “lacerte_tax_2024_WSBAL_ADMINUSER_Updater”
$taskPath = “\Intuit_BU”
Enable the scheduled task
Enable-ScheduledTask -TaskPath $taskPath -TaskName $taskName
Start the scheduled task
Start-ScheduledTask -TaskPath $taskPath -TaskName $taskName
while ($true) {
$taskStatus = (Get-ScheduledTask | Where-Object {$_.TaskName -eq $taskName}).State
if ($taskStatus -eq “Running”) {
Write-Host “Task ‘$taskName’ is Running…”
Start-Sleep -Seconds 5 # Wait 5 seconds before checking again
} elseif ($taskStatus -eq “Ready”) {
Write-Host “Task ‘$taskName’ has changed to Ready.”
break # Exit the loop when the status changes to Ready
} else {
Write-Host “Task ‘$taskName’ is in state ‘$taskStatus’.”
break
}
}
Write-Output “Task $taskName completed.”
Disable the scheduled task
Disable-ScheduledTask -TaskPath $taskPath -TaskName $taskName
Powershell Script 2:
This one basically runs the updater.exe with the switches to copy the downloaded updates to the F:\Lacerte\24tax as well as the C:\apps\Lacerte\24Tax. It is based on which folder under the Lacerte_tax_downloads is the most recent.
This one is a bit more rough in the sense that sometimes updates are downloaded under two different locations.
Location1: C:\Users\ADMINUSER\AppData\Roaming\Lacerte\lacerte_tax-downloads
Location2: C:\Users\ADMINUSER\AppData\Roaming\Intuit\lacerte_tax-downloads
Let’s assume the update in question is 2024.4.52.0
The confusing bit is that on that update , it created a folder under location 1 called 2024.4.52.0 with the CSRM_ProductCatalog.json file only and no other folders and files (usually the new states, etc.).
On Location2, it created the same 2024.4.52.0 but under it had the same CSRM_ProductCatalog.json but also all the other folders and files that are the actual updates.
$folderPath = “C:\Users\ADMINUSER\AppData\Roaming\Lacerte\lacerte_tax-downloads”
$folderPathALT = “C:\Users\ADMINUSER\AppData\Roaming\Intuit\lacerte_tax-downloads”
#Script 2:
Get the subfolders and their last modified date
$subFolders = Get-ChildItem -Path $folderPath -Directory | Sort-Object LastWriteTime -Descending
$subFoldersALT = Get-ChildItem -Path $folderPathALT -Directory | Sort-Object LastWriteTime -Descending
Get the most recently modified subfolder
$mostRecentFolder = $subFolders | Select-Object -First 1
$mostRecentFolderALT = $subFoldersALT | Select-Object -First 1
Store only the folder name in a string variable
$mostRecentFolderName = $mostRecentFolder.Name
$mostRecentFolderNameALT = $mostRecentFolderALT.Name
Construct the command with the folder name
$command = “C:\Apps\Lacerte\24tax$mostRecentFolderName\UpdatePreparer.exe "C:\Apps\Lacerte\24tax\$mostRecentFolderName\CSRM_ProductCatalog.json
” "C:\Users\ADMINUSER\AppData\Roaming\Lacerte\lacerte_tax-downloads\$mostRecentFolderName
" "F:\Lacerte\24tax\Setup24\
" "tax
""
$commandALT = “C:\Apps\Lacerte\24tax$mostRecentFolderNameALT\UpdatePreparer.exe "C:\Apps\Lacerte\24tax\$mostRecentFolderNameALT\CSRM_ProductCatalog.json
” "C:\Users\ADMINUSER\AppData\Roaming\Intuit\lacerte_tax-downloads\$mostRecentFolderNameALT
" "F:\Lacerte\24tax\Setup24\
" "tax
""
Output the command to check it
Write-Output $command
Write-Output $commandALT
You can run the command like this:
Invoke-Expression $command
Invoke-Expression $commandALT
After that, the goal would be to terminate any W24tax.exe on Server1 and server2, run the taxsetup.exe with the argument list and I also like to copy the shortcut to the public desktop with the Lacerte 24 tax running on MAXIMIZED. Lacerte does not like multiple monitors and disappears from all of them requiring the WINDOWS key + SHIFT Key + Arrow keys left or right to make it re-appear.
More info on why I disable Background updater task.
Mostly it is about control.
Before an update on 2/4/2025 there was only one scheduled task with the ADMINUSER because only that user had the Lacerte update Trustee rights. After that update the background updater ignored the trustee rights and EVERY user that logged into Lacerte created a task to download the Lacerte updates. Some of those updates are 1.5GB per user. Having an alarm of low disk space is was more exciting than I would want. Had to disable the Background updater tasks on Server1 and Server2. Please do note that they get re-enabled for the specific user that installed the program under SERVER1 and SERVER2 (ADMINUSER) so that they will need to be disabled.
Enabling or disabling background updates inside the Lacerte software did not seem to have an effect. All users that login now state that background updates are enabled.
I have a case open with Intuit on it, but they are stalling. I also find this idea of not provising enough documentation on updates infuriating. Part of me attributes this to actual incompetence, and another to strategic incompetence to create enough uncertainty and frustration to force people on their cloud offering, a-la Qbooks Desktop.
In addition to that, the background updater requires a user to be logged in from my testing. I will continue to run more tests and when I have a workable solution, I will post it here. This website was the first to provide real info on program switches to help me get closer to a workable solution, so I am grateful for that.