cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Strange MSI behavior. Works interactively or via .cmd, but not via startup script

I am trying to deploy an Admin Studio-created .msi file via a startup script.

The msi creates a directory, copies files, adds a couple of permissions to the installed files, and adds a couple of registry settings. That's it.

Double-clicking the msi works to install it. The files come down with their security settings, the registry entries get created, and most importantly, the app gets listed in Add/Remove programs.

I've created a batch (.cmd) file to call the .msi silently, and the functionality above also works as expected.

The next step is to call the .cmd file in our machine startup scripts (gpo). The startup script does run the cmd file, and this does kick off the .msi installation silently. The files get installed, the registry keys also come down (so the application is usable), BUT the app doesn't appear in Add/Remove Programs. It DOES appear in HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\{guid_goes_here}. When you right-click the msi and try to uninstall, it tells me that this action is only valid for products that are installed. There is no rollback due to failure.

I have the logs to point out the differences between an interactive install and a the startup script one, if needed.

We tested a Microsoft-supplied msi file, (the Windows 200 Resource Kit installer) under the same conditions. The interactive install (double-click, or user-called .cmd file) works as expected, but we get the same thing happening when we try to deploy this using a startup script.

Therefore, we believe that this is an environmental or permissions issue, rather than a problem with any .msi itself.

We think that startup scripts use the system account, but don't really know how to troubleshoot much further. We've added Authenticated Users read permission to the share that the .msi is on, but this didn't fix it.

Can anyone help?

Glenn

Installation log:

=== Verbose logging started: 19/07/2005 18:54:02 Build type: SHIP UNICODE 2.00.2600.1106 Calling process: C:\WINNT\system32\msiexec.exe ===
MSI (c) (94:9C): Resetting cached policy values
MSI (c) (94:9C): Machine policy value 'Debug' is 0
MSI (c) (94:9C): ******* RunEngine:
******* Product: \\SYDprdght01\patches$\00039 - APRA IntD2A 2.4 (Production) - Active\Revision 1.0\Single Files\APRA IntD2A Production.msi
******* Action:
******* CommandLine: ******
****
MSI (c) (94:9C): Client-side and UI is none or basic: Running entire install on the server.
MSI (c) (94:9C): Grabbed execution mutex.
MSI (c) (94:9C): Cloaking enabled.
MSI (c) (94:9C): Incrementing counter to disable shutdown. Counter after increment: 0
=== Logging started: 19/07/2005 18:54:03 ===
Action start 18:54:03: INSTALL.
Action start 18:54:03: AppSearch.
Action ended 18:54:03: AppSearch. Return value 1.
Action start 18:54:03: LaunchConditions.
Action ended 18:54:03: LaunchConditions. Return value 1.
Action start 18:54:03: FindRelatedProducts.
Action ended 18:54:03: FindRelatedProducts. Return value 1.
Action start 18:54:03: ValidateProductID.
Action ended 18:54:03: ValidateProductID. Return value 1.
Action start 18:54:03: CostInitialize.
Action ended 18:54:03: CostInitialize. Return value 1.
Action start 18:54:03: FileCost.
Action ended 18:54:03: FileCost. Return value 1.
Action start 18:54:03: IsolateComponents.
Action ended 18:54:03: IsolateComponents. Return value 1.
Action start 18:54:03: CostFinalize.
Action ended 18:54:03: CostFinalize. Return value 1.
Action start 18:54:03: SetARPINSTALLLOCATION.
Action ended 18:54:03: SetARPINSTALLLOCATION. Return value 1.
Action start 18:54:03: SetODBCFolders.
Action ended 18:54:03: SetODBCFolders. Return value 1.
Action start 18:54:03: MigrateFeatureStates.
Action ended 18:54:03: MigrateFeatureStates. Return value 0.
Action start 18:54:03: InstallValidate.
Action ended 18:54:03: InstallValidate. Return value 1.
Action start 18:54:03: RemoveExistingProducts.
Action ended 18:54:03: RemoveExistingProducts. Return value 1.
Action start 18:54:03: InstallInitialize.
Action ended 18:54:05: InstallInitialize. Return value 1.
Action start 18:54:05: AllocateRegistrySpace.
Action ended 18:54:05: AllocateRegistrySpace. Return value 1.
Action start 18:54:05: ProcessComponents.
Action ended 18:54:05: ProcessComponents. Return value 1.
Action start 18:54:05: UnpublishComponents.
Action ended 18:54:05: UnpublishComponents. Return value 1.
Action start 18:54:05: MsiUnpublishAssemblies.
Action ended 18:54:05: MsiUnpublishAssemblies. Return value 1.
Action start 18:54:05: UnpublishFeatures.
Action ended 18:54:05: UnpublishFeatures. Return value 1.
Action start 18:54:05: StopServices.
Action ended 18:54:05: StopServices. Return value 1.
Action start 18:54:05: DeleteServices.
Action ended 18:54:05: DeleteServices. Return value 1.
Action start 18:54:05: UnregisterComPlus.
Action ended 18:54:05: UnregisterComPlus. Return value 1.
Action start 18:54:05: SelfUnregModules.
Action ended 18:54:05: SelfUnregModules. Return value 1.
Action start 18:54:05: UnregisterTypeLibraries.
Action ended 18:54:05: UnregisterTypeLibraries. Return value 1.
Action start 18:54:05: RemoveODBC.
Action ended 18:54:05: RemoveODBC. Return value 1.
Action start 18:54:05: UnregisterFonts.
Action ended 18:54:05: UnregisterFonts. Return value 1.
Action start 18:54:05: RemoveRegistryValues.
Action ended 18:54:05: RemoveRegistryValues. Return value 1.
Action start 18:54:05: UnregisterClassInfo.
Action ended 18:54:05: UnregisterClassInfo. Return value 1.
Action start 18:54:05: UnregisterExtensionInfo.
Action ended 18:54:05: UnregisterExtensionInfo. Return value 1.
Action start 18:54:05: UnregisterProgIdInfo.
Action ended 18:54:05: UnregisterProgIdInfo. Return value 1.
Action start 18:54:05: UnregisterMIMEInfo.
Action ended 18:54:05: UnregisterMIMEInfo. Return value 1.
Action start 18:54:05: RemoveIniValues.
Action ended 18:54:05: RemoveIniValues. Return value 1.
Action start 18:54:05: RemoveShortcuts.
Action ended 18:54:05: RemoveShortcuts. Return value 1.
Action start 18:54:05: RemoveEnvironmentStrings.
Action ended 18:54:05: RemoveEnvironmentStrings. Return value 1.
Action start 18:54:05: RemoveDuplicateFiles.
Action ended 18:54:05: RemoveDuplicateFiles. Return value 1.
Action start 18:54:05: RemoveFiles.
Action ended 18:54:05: RemoveFiles. Return value 1.
Action start 18:54:05: RemoveFolders.
Action ended 18:54:05: RemoveFolders. Return value 1.
Action start 18:54:05: CreateFolders.
Action ended 18:54:05: CreateFolders. Return value 1.
Action start 18:54:05: MoveFiles.
Action ended 18:54:05: MoveFiles. Return value 1.
Action start 18:54:05: InstallFiles.
Action ended 18:54:05: InstallFiles. Return value 1.
Action start 18:54:05: PatchFiles.
Action ended 18:54:05: PatchFiles. Return value 1.
Action start 18:54:05: DuplicateFiles.
Action ended 18:54:05: DuplicateFiles. Return value 1.
Action start 18:54:05: BindImage.
Action ended 18:54:05: BindImage. Return value 1.
Action start 18:54:05: CreateShortcuts.
Action ended 18:54:05: CreateShortcuts. Return value 1.
Action start 18:54:05: RegisterClassInfo.
Action ended 18:54:05: RegisterClassInfo. Return value 1.
Action start 18:54:05: RegisterExtensionInfo.
Action ended 18:54:05: RegisterExtensionInfo. Return value 1.
Action start 18:54:05: RegisterProgIdInfo.
Action ended 18:54:05: RegisterProgIdInfo. Return value 1.
Action start 18:54:05: RegisterMIMEInfo.
Action ended 18:54:05: RegisterMIMEInfo. Return value 1.
Action start 18:54:05: WriteRegistryValues.
Action ended 18:54:05: WriteRegistryValues. Return value 1.
Action start 18:54:05: WriteIniValues.
Action ended 18:54:05: WriteIniValues. Return value 1.
Action start 18:54:05: WriteEnvironmentStrings.
Action ended 18:54:05: WriteEnvironmentStrings. Return value 1.
Action start 18:54:05: RegisterFonts.
Action ended 18:54:05: RegisterFonts. Return value 1.
Action start 18:54:05: InstallODBC.
Action ended 18:54:05: InstallODBC. Return value 0.
Action start 18:54:05: RegisterTypeLibraries.
Action ended 18:54:05: RegisterTypeLibraries. Return value 1.
Action start 18:54:05: SelfRegModules.
Action ended 18:54:05: SelfRegModules. Return value 1.
Action start 18:54:05: RegisterComPlus.
Action ended 18:54:05: RegisterComPlus. Return value 1.
Action start 18:54:05: InstallServices.
Action ended 18:54:05: InstallServices. Return value 1.
Action start 18:54:05: StartServices.
Action ended 18:54:05: StartServices. Return value 1.
Action start 18:54:05: RegisterUser.
Action ended 18:54:05: RegisterUser. Return value 1.
Action start 18:54:05: RegisterProduct.
Action ended 18:54:05: RegisterProduct. Return value 1.
Action start 18:54:05: PublishComponents.
Action ended 18:54:05: PublishComponents. Return value 1.
Action start 18:54:05: MsiPublishAssemblies.
Action ended 18:54:05: MsiPublishAssemblies. Return value 1.
Action start 18:54:05: PublishFeatures.
Action ended 18:54:05: PublishFeatures. Return value 1.
Action start 18:54:05: PublishProduct.
Action ended 18:54:05: PublishProduct. Return value 1.
Action start 18:54:05: InstallFinalize.
Action ended 18:54:06: InstallFinalize. Return value 1.
Action ended 18:54:06: INSTALL. Return value 1.
=== Logging stopped: 19/07/2005 18:54:06 ===
MSI (c) (94:9C): Decrementing counter to disable shutdown. If counter >= 0, shutdown will be denied. Counter after decrement: -1
MSI (c) (94:9C): MainEngineThread is returning 0
=== Verbose logging stopped: 19/07/2005 18:54:06 ===
(1) Reply
A Up,

I think you maybe doing a current user rather than all user installation.

Check the ALLUSERS value in the Property table of the msi is set to 1 or pass it to MSIExec on the command line.

Another way to chk is to install the app manually as one user then logon as another and see if has been installed for them also.

Good Luck Nik (NzDudeinNz) 😄