MSI Packaging Best Practices

1. Capture the application on Installshield template. 2. Never use hardcoded paths in MSI/MST tables. 3. Ensure that any junk value is not present in the registry table. 4. Check for entries made by the application in Services and Host files (present in system32\drivers\etc. folder) 5. Any files going to User profiles should have an HKCU key as its key path. 6. Any + in registry table can be changed to * ( this is not applicable for MM) Do this in .WSI file 7. Component rules are to be checked. [HKCU + HKCR], [HKLM + HKCU], [HKCU + Files] in same component is not acceptable. Only exception here is for the component going to user profile which will have [files + HKCU]. 8. [INSTALLDIR] property can be used for the installdir where ever possible instead of [PROGRAMFILESFOLDER]installdir 9. Check for unnecessary launch conditions in vendor MSIs. 10. Use MSI Table wherever possible. Avoid vbscripts/custom actions to the maximum extent. 11. Kernel drivers are never captured by Wise. Always check for Kernel drivers for any application, in the system registry/ in a Wise Install Manager or Master capture. Install these kernel drivers using Service install table through the MSI(Refer \\16.138.16.101\KnowledgeDB\ ‘Client name’\Standards\HP Installing a Kernel Service.doc). 12. Use Service Control table for starting and stopping services. 13. Use HPTerminateProcess custom action for terminating processes. 14. Use [!FileKey] in place of short paths to files in registry and inifile tables. 15. Check for files/folders getting installed to Administrator’s user profile and remove Administrator from directory table. Get the files / folders installed to all the users on a per user basis with the help of a HKCU registry key. 16. Never hardcode inside a VBScript custom action. Use properties or environment variables.

MSI Packaging Best Practices
17. Use Date and Time properties where ever possible if application specific date or time of install is captured. 18. .hlp, .chm, .txt files installed to systemfolder need not be permanent. Just Share them. 19. Files installed to System16Folder should be permanent. 20. For transforms, do not move files/registry keys between components without checking the component conditions. Ensure that the integrity of component conditions are maintained in the MST also. 21. Have the file and its related registration information present in the same component. 22. Add / Remove programs icon should be set as per the source. If source does not put an ARP icon, set the main shortcut exe icon. 23. Check for _Validation table errors in ICE validation 24. .xla files [excel addins] should be placed in c:\program files\microsoft office\office 10\library. If xla is in installdir then do not add the file to above location. 25. In case of environment variable, If application is putting shortpath ie [c:\Progra~1\XXX~1\XXX.exe], retain the same in MSI. 26. If Class table entries are present check for Warning / Errors in System Event Viewer once you test the application functionality. 27. Click all the executables in the applications in user mode and make sure they behave as per source in administrator mode. 28. Click all the executables in the applications in before uninstall so that you are aware about the processes that need to be killed. 29. Check for MSI / MST repair in user mode. Make sure transforms created for vendor MSI repair correctly. 30. It should be a clean uninstall. Any run time file created by the application should be removed. Only user created and saved files can be retained. 31. Make sure that dependency applications and your application work in Sync during your application install. Make sure that dependency applications or the build applications are not tampered after uninstall. 32. Using Installrite tool make sure that there are no deleted registry keys. 33. After MSI uninstall, restart the machine and click on Search Option in Windows. Make sure it works as before.

MSI Packaging Best Practices
34. Document all your efforts and observations and new learning.

Sign up to vote on this title
UsefulNot useful