Windows Application Deployment
Windows typically uses the following directory to store MSI logs with the filenames “Msi*.log”:
By examining the MSI logs most recently modified, you can often see installation issues, such as permission errors, registry problems, and dependancy errors:
dir /O-D /TW %SYSTEMROOT%\Temp\Msi*.log
If MSI logging is not enabled, you can enable it by editing the registry or via GPO. See KB223300 for details on how to enable logging.
If a domain test bed is not avaiable, either real or virtualized, it is best to use a single workstation to test an unproven MSI based package. Frequently the deployment process is hung up when the MSI performs a custom action that requires some form of user interaction. It is important to not only look for this behavior in new installations, but also MSI’s used to upgrade long functioning deployed applications, before introducing either to your GPO.
This is the recommended test procedure:
A) Perform an installation and look for dialogues that require user intervention:
- MSIEXEC /i “\\path_to_msi” /qb
- The /i switch tells MSIEXEC to install or configure a product
- The /qb switch tells MSIEXEC to use a basic UI
B) If the application does not install correctly, check the MSI log file for errors. Otherwise confirm the application is functioning correctly.
C) It is critical to test what happens during uninstallation of the application too. Any user interaction requirements could cause a failure when upgrading or removing your application later. Run the following command to observe the uninstall process:
- MSIEXEC /x “\\path_to_msi” /qb
- The /x switch tells MSIEXEC to uninstall the product
D) If the application installs and uninstalls without requiring user interaction, it will probably work fine deployed. To finalize a simulation, the application should be silently installed remotely using PSEXEC and the following commands:
- PSEXEC -u context\username -p password \\target_machine MSIEXEC.EXE /i “\\path_to_msi” /qn
E) Confirm the application functions correctly with an unprivileged user account. Check the MSI log on the target machine for errors if necessary.
F) Once again, test the uninstall process:
- PSEXEC -u context\username -p password \\target_machine MSIEXEC.EXE /x “\\path_to_msi” /qn
G) If the application appears to be working, you can proceed with assigning it to your GPO.
H) If application does not deploy, try the following:
- Examine the MSI logs on the client computer and make any adjustments necessary.
- Confirm Vista’s UAC is not blocking installation.
- Check http://www.appdeploy.com for valuable tips and tricks, particularly if you are deploying a popular commerical package. The site has some great resources on how to customize packages so they will install correctly.