Just as a follow up of my own question
I have managed to find a way to accomplish this, although cludgy it works. I created a powershell script that uses Icacls to save the current permission structure, takeown to take ownership to the adminstrators group, icacls to assign full control to adminstrators, install the software msi and then icacls to restore the original ownership and permissions.
Now I have another issue though. If I run the script from the command line using "powershell .\script.ps1" the script works, if I deploy it as a package the script also works, but if I try to deploy it as part of a task sequence I get a 0x80070001 file not found error.
When I run the task sequence it creates the c:\_smstasksequence\packages folder, copies the package files into the folder, and then immediately deletes the content and issues the error in the SMSTS.log.
The only difference I can see is that the package puts the files into c:\windows\sysvol64\ccm\cache instead for c:\_smstasksequence\packages.
I have tried program lines using powershell -file "%~dp0script.ps1", powershell .\script.ps1, powershell -command script.ps1 and every variation of these I can think of and have tried hard coding the Start In directory to the c:\_smstasksequence and various other combinations and cannot seem to get even a different error message.
Is there something fundamentally wrong with my logic here or shouldn't this be able to work. Execution policy is set to remote signed, scripts running as admin,