<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-29452818</id><updated>2012-01-31T21:55:54.946-08:00</updated><category term='install'/><category term='VBScript'/><category term='Dfsusrprf.xml'/><category term='VersionNT32'/><category term='FAQ'/><category term='package'/><category term='display'/><category term='AES'/><category term='exclusion list'/><category term='WIN64DUALFOLDERS'/><category term='type 51'/><category term='key path'/><category term='registry'/><category term='Condition'/><category term='new in windows installer'/><category term='MsiSystemRebootPending'/><category term='Environment Variables'/><category term='Office 2003'/><category term='Wix'/><category term='MSI'/><category term='shortcut'/><category term='WinMerge'/><category term='windows 7'/><category term='Open'/><category term='Advertising info'/><category term='Window 7'/><category term='Permission'/><category term='copy'/><category term='powershell'/><category term='ShellExtensionx64.dll'/><category term='proxy settings in Mozilla Firefox'/><category term='repair'/><category term='launch'/><category term='eventviewr'/><category term='[System64Folder]'/><category term='Manufacturer'/><category term='Prompt'/><category term='XCACLS'/><category term='Context Menu'/><category term='Microsoft Installer'/><category term='x64'/><category term='uninstall'/><category term='Current script directory'/><category term='64 bit'/><category term='Field shortcut of table shortcut: Error retrieving shortcut of table'/><category term='patch'/><category term='ICE Errors'/><category term='table'/><category term='64-bit'/><category term='Product version'/><category term='MsiLogFileLocation'/><category term='.ico'/><category term='Product Language'/><category term='Word 2007'/><category term='Interop'/><category term='msp'/><category term='VB script'/><category term='Firefox'/><category term='suppress'/><category term='getabsolutepath'/><category term='Windows Installer'/><category term='Open File prompt'/><category term='5.0'/><category term='large'/><category term='install exe'/><category term='MSIDISABLERMRESTART'/><category term='ShellExecute'/><category term='ACLs'/><category term='MsiLogging'/><category term='Order'/><category term='IIS Express'/><category term='silent'/><category term='property passing'/><category term='[ProgramFiles64Folder]'/><category term='WISE'/><category term='MSIRESTARTMANAGER'/><category term='cab'/><category term='System paths'/><category term='isolation'/><category term='folder'/><category term='.Net'/><category term='set property'/><category term='gVIM'/><category term='application re-packaging'/><category term='x86'/><category term='Lock Permission'/><category term='Product code'/><category term='Interview'/><category term='easy'/><category term='Visual Studio 2010'/><category term='SEE_MASK_NOZONECHECKS'/><category term='Definition'/><category term='MsiRestartManagerSessionKey'/><category term='Language Packs'/><category term='Self Heal'/><category term='App-V'/><category term='32-bit'/><category term='Mozilla'/><category term='Windows Installer 5.0'/><category term='script'/><category term='network installation'/><category term='MUI'/><category term='getfileversion'/><category term='troubleshoot'/><category term='Check'/><category term='.exe'/><category term='file'/><category term='Frequently asked questions'/><category term='OSD'/><category term='Secedit'/><category term='User paths.'/><category term='directory passing.'/><category term='MSIARPSETTINGSIDENTIFIER'/><category term='MSIAssembly'/><category term='CACLS'/><category term='COM'/><category term='size'/><category term='issue'/><category term='DISM'/><category term='Binary'/><category term='MSIRMSHUTDOWN'/><category term='Product name'/><category term='RunOnce key'/><category term='close'/><category term='feature'/><category term='silent install'/><category term='Icon'/><category term='Properties'/><category term='MsiRunningElevated'/><category term='[SystemFolder]'/><category term='[ProgramFilesFolder]'/><category term='Application Virtualization'/><category term='Precedence'/><category term='Installshield'/><category term='Custom Action'/><category term='fidessa'/><category term='VersionNT64'/><category term='Application Packaging'/><category term='questions'/><category term='Internal Consistency Evaluators'/><title type='text'>Microsoft Installer: MSI</title><subtitle type='html'>This Blog is for all people working or related to the MSI and App-V.
 There are lots of issues we face in everyday work regarding the technology. The sole purpose of my blog is to help others with whatever I learn. All you people out there, please help by commenting, voting, propagating and sharing my blog with your friends and colleagues but with due credit and acknowledgement to the material posted here with my name and blog url as I still do hold the copyright of the posts here.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-29452818.post-7494254493767662054</id><published>2012-01-23T20:33:00.000-08:00</published><updated>2012-01-23T20:33:48.310-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='package'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy settings in Mozilla Firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='Mozilla'/><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='silent install'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Packaging Mozilla Firefox 9.0.1</title><content type='html'>Most people dread while packaging Mozilla Firefox application and mostly try to make a silent installation of it. I was recently given task to package the latest Mozilla Firefox application version 9.0.1&lt;br /&gt;I would like to share here how I could easily package it. Also by this method you will be able to do Proxy server settings.&lt;br /&gt;First step is to do a Setup capture of the source exe which can be downloaded from Mozilla’s website. Take care that you do not have to launch the application after the installation is completed.&lt;br /&gt;Second Step is to copy 3 files as stated below. You can add these files in your .wsi directly after the setup capture. These 3 files will solve all your issues.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Mozilla.cfg&lt;/strong&gt;: This file needs to be added to "%programfiles%\Mozilla Firefox\" folder and should have this content:&lt;br /&gt;&lt;br /&gt;//Firefox Default Settings&lt;br /&gt;// set Firefox Default homepage&lt;br /&gt;pref("browser.startup.homepage","http://your.intranet.com");&lt;br /&gt;// disable default browser check&lt;br /&gt;pref("browser.shell.checkDefaultBrowser", false);&lt;br /&gt;// disable application updates&lt;br /&gt;pref("app.update.enabled", false)&lt;br /&gt;// disables the 'know your rights' button from displaying on first run&lt;br /&gt;pref("browser.rights.3.shown", true);&lt;br /&gt;// disables the request to send performance data from displaying&lt;br /&gt;pref("toolkit.telemetry.prompted", 2);&lt;br /&gt;pref("toolkit.telemetry.rejected", true);&lt;br /&gt;//Firefox Default Settings&lt;br /&gt;//set proxy server settings, choose whatever is required by your organization&lt;br /&gt;pref("network.proxy.ftp", "your.proxy.server");&lt;br /&gt;pref("network.proxy.ftp_port", 8080);&lt;br /&gt;pref("network.proxy.gopher", " your.proxy.server ");&lt;br /&gt;pref("network.proxy.gopher_port", 8080);&lt;br /&gt;pref("network.proxy.http", " your.proxy.server ");&lt;br /&gt;pref("network.proxy.http_port", 8080);&lt;br /&gt;pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1, *.server.local");&lt;br /&gt;pref("network.proxy.type", 1);&lt;br /&gt;pref("network.proxy.share_proxy_settings", true); // use the same proxy settings for all protocols&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. local-settings.js&lt;/strong&gt;: This file needs to be added to "%programfiles%\Mozilla Firefox\defaults\pref" folder and should have this content:&lt;br /&gt;&lt;br /&gt;pref("general.config.obscure_value", 0);&lt;br /&gt;pref("general.config.filename", "mozilla.cfg");&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. override.ini&lt;/strong&gt; : This file needs to be added to “%programfiles%\Mozilla Firefox\” folder and should have this content:&lt;br /&gt;&lt;br /&gt;[XRE]&lt;br /&gt;EnableProfileMigrator=false&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It is just this simple you can now just remove the Desktop shortcut in your .wsi file and compile it to .msi file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-7494254493767662054?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/7494254493767662054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=7494254493767662054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/7494254493767662054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/7494254493767662054'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2012/01/packaging-mozilla-firefox-901.html' title='Packaging Mozilla Firefox 9.0.1'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-107919233855291370</id><published>2012-01-11T14:23:00.000-08:00</published><updated>2012-01-15T22:04:21.971-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='powershell'/><category scheme='http://www.blogger.com/atom/ns#' term='Permission'/><category scheme='http://www.blogger.com/atom/ns#' term='Current script directory'/><category scheme='http://www.blogger.com/atom/ns#' term='install exe'/><category scheme='http://www.blogger.com/atom/ns#' term='SEE_MASK_NOZONECHECKS'/><title type='text'>My First Powershell script</title><content type='html'>Seems that Powershell is the way to go forward as it is well supported with Windows 7 and Microsoft. It is a powerful script. I think it will revolutionize the way we script today.&lt;br /&gt;I just wrote my first powershell script and thought it would be good to share with all. I am not going to give any tutorial for Powershell as there are a lot of them available.&lt;br /&gt;There are a few things which are worth noting in this script:&lt;br /&gt;&lt;br /&gt;1) You can get the script directory from the below script in Get-ScriptDirectory function.&lt;br /&gt;2) You can suppress the remote exe installation prompt by command: $env:SEE_MASK_NOZONECHECKS = 1&lt;br /&gt;code&lt;br /&gt;Remove-Item env:\SEE_MASK_NOZONECHECKS&lt;br /&gt;3) Installation of setup.exe with parameters can be seen in function InstallPackage&lt;br /&gt;4) Permissions can be set in Powershell script using the GivePermissions function below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is the code:&lt;br /&gt;------------------------------------------------------&lt;br /&gt;&lt;br /&gt;function Get-ScriptDirectory &lt;br /&gt;{ &lt;br /&gt;$Invocation = (Get-Variable MyInvocation -Scope 1).Value &lt;br /&gt;Split-Path $Invocation.MyCommand.Path &lt;br /&gt;}&lt;br /&gt;$env:SEE_MASK_NOZONECHECKS = 1&lt;br /&gt;$val1 = Get-ScriptDirectory&lt;br /&gt;$CurrentPath = $val1.ToString()&lt;br /&gt;$Setup = $CurrentPath + "\setup.exe"&lt;br /&gt;$Config = " "&amp;nbsp; &lt;br /&gt;function InstallPackage&lt;br /&gt;{&lt;br /&gt;# Write-host $Setup&lt;br /&gt;# Write-host $Config&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $process = [Diagnostics.Process]::Start($Setup,$Config)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $process.WaitForExit()&lt;br /&gt;}&lt;br /&gt;function GivePermissions&lt;br /&gt;{&lt;br /&gt;$acl = Get-Acl "C:\Program Files\PLSQL"&lt;br /&gt;$acl.SetAccessRuleProtection($True, $True)&lt;br /&gt;$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Users","Modify", "ContainerInherit, ObjectInherit", "None", "Allow")&lt;br /&gt;$acl.AddAccessRule($rule)&lt;br /&gt;Set-Acl "C:\Program Files\PLSQL" $acl&lt;br /&gt;}&lt;br /&gt;# -Main ----------------------------------&lt;br /&gt;InstallPackage&lt;br /&gt;GivePermissions&lt;br /&gt;Remove-Item env:\SEE_MASK_NOZONECHECKS&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-107919233855291370?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/107919233855291370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=107919233855291370' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/107919233855291370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/107919233855291370'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2012/01/my-first-powershell-script.html' title='My First Powershell script'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-1223974746115859487</id><published>2011-12-08T20:01:00.000-08:00</published><updated>2011-12-08T20:01:48.905-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fidessa'/><category scheme='http://www.blogger.com/atom/ns#' term='App-V'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><category scheme='http://www.blogger.com/atom/ns#' term='OSD'/><title type='text'>App-V for Royalblue Fidessa application</title><content type='html'>I want to document the OSD file for Royalblue Fidessa Application here as other capture done alone does not make the virtualized package work. There were certain client customizations which&amp;nbsp;were required and I had to do them in the OSD file.&lt;br /&gt;Here is the OSD file which I used:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" standalone="no"?&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;lt;SOFTPKG GUID="XXXX-XXX-XXXX-XXXX" NAME="Fidessa" VERSION="6.3.9.61056"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;IMPLEMENTATION&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;CODEBASE HREF="FILE://%SFT_SOFTGRIDSERVER%\SCCMData\Royalblue_Fidessa_6.7.0b_VFS_v1.0\Royalblue_Fidessa_6.7.0b_VFS_v1.0.sft" GUID="8XXX5-8XX0-4XX7-AXX1-5171XXXXXA0" PARAMETERS="" FILENAME="%CSIDL_PROGRAM_FILES%\royalblue\fidessa\FtwLaunch.exe" SYSGUARDFILE="Royalblue_Fidessa_6.7.0b_VFS_v1.0\osguard.cp" SIZE="15076089"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;VIRTUALENV TERMINATECHILDREN="FALSE"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;POLICIES&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;LOCAL_INTERACTION_ALLOWED&amp;gt;TRUE&amp;lt;/LOCAL_INTERACTION_ALLOWED&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/POLICIES&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;REGISTRY&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;REGKEY HIVE="HKLM" KEY="Software\royalblue technologies\Fidessa" NOREDIR="FALSE"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;REGVALUE NAME="ReadWritePath" REGTYPE="REG_SZ"&amp;gt;C:\ProgramData\Fidessa\Fidessa&amp;lt;/REGVALUE&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/REGKEY&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/REGISTRY&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;ENVLIST/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/VIRTUALENV&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;WORKINGDIR/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;VM VALUE="Win32"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;SUBSYSTEM VALUE="windows"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/VM&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;OS VALUE="Win2003TS"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;OS VALUE="Win2003TS64"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;OS VALUE="Win2008R2TS64"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;OS VALUE="Win2008TS"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;OS VALUE="Win2008TS64"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;OS VALUE="Win7"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;OS VALUE="Win764"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;OS VALUE="WinXP"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;OS VALUE="WinXP64"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/IMPLEMENTATION&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;DEPENDENCY&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;CLIENTVERSION VERSION="4.6.0.0"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;SCRIPT EVENT="LAUNCH" PROTECT="FALSE" TIMING="PRE" WAIT="TRUE" EXTERN="TRUE"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;SCRIPTBODY LANGUAGE="Batch"&amp;gt;ECHO OFF \n IF NOT EXIST "C:\ProgramData\Fidessa" MD "C:\ProgramData\Fidessa" \n IF NOT EXIST "C:\ProgramData\Fidessa\Fidessa" MD "C:\ProgramData\Fidessa\Fidessa" \n IF NOT EXIST "C:\ProgramData\Fidessa\Fidessa\install" MD "C:\ProgramData\Fidessa\Fidessa\install" \n IF NOT EXIST "C:\ProgramData\Fidessa\Fidessa\log" MD "C:\ProgramData\Fidessa\Fidessa\log" \n IF NOT EXIST "C:\ProgramData\Fidessa\Fidessa\install\USER.config" cmd.exe /c Echo Y&lt;br /&gt;cacls "C:\ProgramData\Fidessa\Fidessa" /t /e /c /g Users:C \n&amp;lt;/SCRIPTBODY&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/DEPENDENCY&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;PACKAGE NAME="Royalblue_Fidessa_6.7.0b_VFS_v1.0"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;ABSTRACT&amp;gt;App-V 4.6 SP1&amp;lt;/ABSTRACT&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;MGMT_SHORTCUTLIST&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;SHORTCUT LOCATION="%CSIDL_PROGRAMS%\Fidessa\Fidessa" FILENAME="Fidessa.lnk" OVERRIDDEN="TRUE" DISPLAY="Fidessa" ICON="%SFT_MIME_SOURCE%/Royalblue_Fidessa_6.7.0b_VFS_v1.0 Icons/Fidessa 6.3.9.61056.ico"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/MGMT_SHORTCUTLIST&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;MGMT_FILEASSOCIATIONS&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;PROGIDLIST/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;FILEEXTENSIONLIST/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/MGMT_FILEASSOCIATIONS&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/SOFTPKG&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Script is the main part and the customization which was required so that the Updates from Fidessa Server are downloaded in local ProgramData directory rather than in bubble. Then this should be able to update the directory inside the bubble, hence made local interaction true. The Directory inside bubble was given write permission. Also all references to C:\ProgramData were deleted in the bubble so that the files are automatically downloaded to the local machine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-1223974746115859487?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/1223974746115859487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=1223974746115859487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/1223974746115859487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/1223974746115859487'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2011/12/app-v-for-royalblue-fidessa-application.html' title='App-V for Royalblue Fidessa application'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-8776805848862764762</id><published>2011-12-07T14:47:00.000-08:00</published><updated>2011-12-07T14:47:40.015-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='application re-packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='Definition'/><title type='text'>Definition of Application Re-Packaging</title><content type='html'>I have been often asked about the proper definition of Application Re-Packaging. This is the best I could find:&lt;br /&gt;&lt;br /&gt;Application Re-packaging solution offers customized application configuration and repackaging of third-party or internally-developed applications to standardize the installation routine, reduce deployment errors, and minimize support costs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-8776805848862764762?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/8776805848862764762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=8776805848862764762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/8776805848862764762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/8776805848862764762'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2011/12/definition-of-application-re-packaging.html' title='Definition of Application Re-Packaging'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-8243248936208518037</id><published>2011-11-28T14:46:00.000-08:00</published><updated>2011-11-28T14:46:12.683-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='uninstall'/><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='VB script'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Dfsusrprf.xml'/><category scheme='http://www.blogger.com/atom/ns#' term='silent'/><title type='text'>Repackaging Microsoft Visual Studio 2010 Pro (Or any other version)</title><content type='html'>There are a lot of sites referring the installation of Microsoft Visual Studio 2010 in silent mode, but if you have a closer look, no one gives the complete information on the installation and Un-installation of the package.&lt;br /&gt;Here are the steps which I followed to install Visual Studio on 32 bit as well as 64 bit machines. I assure you that you can save atleast 1 to 2 man days by taking information from here before proceeding with your packaging.&lt;br /&gt;Copy the compete source to a directory and name this directory as per your standard naming convention.&lt;br /&gt;Copy these files to this main directory (Explanation and details also provided later)&lt;br /&gt;&lt;ol&gt;&lt;li&gt;VS2010_Uninstall-RTM.ENU.exe&lt;/li&gt;&lt;li&gt;Dfusrprf.xml&lt;/li&gt;&lt;li&gt;User.vbs&lt;/li&gt;&lt;li&gt;Arpsuppress64.reg&lt;/li&gt;&lt;li&gt;Arpsuppress32.reg&lt;/li&gt;&lt;li&gt;Arpsuppresswow64.reg&lt;/li&gt;&lt;li&gt;ConfigurationFile.ini&lt;/li&gt;&lt;li&gt;Setup.vbs&lt;/li&gt;&lt;li&gt;Uninstall.vbs&lt;/li&gt;&lt;li&gt;Uninstall.bat&lt;/li&gt;&lt;/ol&gt;These files are the complete list of files which will do the trick to install and un-install the MS Visual Studio 2010 package.&lt;br /&gt;You can use WISE Script Editor to create an exe for most of the part. Since I wanted to give the content in a simpler way, I am mentioning it like this in text for you.&lt;br /&gt;Details of these files are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;VS2010_Uninstall-RTM.ENU.exe:&lt;/strong&gt; This is the uninstall file provided by Microsoft and this will un-install any version of Visual Studio. You can download this from http://archive.msdn.microsoft.com/vs2010uninstall/Release/ProjectReleases.aspx?ReleaseId=4321&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Dfusrprf.xml:&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;Use the following content for this file:&lt;br /&gt;&lt;pre&gt;&amp;lt;?xml version="1.0" encoding="utf-8" standalone="no"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE userprefs&amp;gt;&lt;br /&gt;&amp;lt;dotfuscator&amp;gt;&lt;br /&gt;&amp;lt;p982&amp;gt;True&amp;lt;/p982&amp;gt;&lt;br /&gt;&amp;lt;p974&amp;gt;False&amp;lt;/p974&amp;gt;&lt;br /&gt;&amp;lt;p984&amp;gt;False&amp;lt;/p984&amp;gt;&lt;br /&gt;&amp;lt;p979&amp;gt;0&amp;lt;/p979&amp;gt;&lt;br /&gt;&amp;lt;p981&amp;gt;0&amp;lt;/p981&amp;gt;&lt;br /&gt;&amp;lt;p985&amp;gt;False&amp;lt;/p985&amp;gt;&lt;br /&gt;&amp;lt;p975&amp;gt; &amp;lt;/p975&amp;gt;&lt;br /&gt;&amp;lt;p976&amp;gt; &amp;lt;/p976&amp;gt;&lt;br /&gt;&amp;lt;p980&amp;gt;0&amp;lt;/p980&amp;gt;&lt;br /&gt;&amp;lt;p973&amp;gt;False&amp;lt;/p973&amp;gt;&lt;br /&gt;&amp;lt;p986 /&amp;gt;&lt;br /&gt;&amp;lt;p990&amp;gt;False&amp;lt;/p990&amp;gt;&lt;br /&gt;&amp;lt;p987 /&amp;gt;&lt;br /&gt;&amp;lt;p989&amp;gt;0,0,0,0&amp;lt;/p989&amp;gt;&lt;br /&gt;&amp;lt;p988 /&amp;gt;&lt;br /&gt;&amp;lt;/dotfuscator&amp;gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;User.vbs:&lt;/strong&gt; The Dfsusrprf.xml needs to be copied in each users profile, you can use active setup to run this file in each user. You can use the below content for this file:&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;Set oShell = CreateObject("WScript.Shell")&lt;br /&gt;Set oFSO = CreateObject("Scripting.FileSystemObject")&lt;br /&gt;On Error Resume Next&lt;br /&gt;sCurDir = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\") - 1)&lt;br /&gt;&lt;br /&gt;sup = oShell.ExpandEnvironmentStrings ("%USERPROFILE%")&lt;br /&gt;&lt;br /&gt;If Not oFSO.FolderExists (sup &amp;amp; "\AppData\Local\PreEmptive Solutions\Dotfuscator Community Edition\5.0") Then&lt;br /&gt;oFSO.CreateFolder sup &amp;amp; "\AppData\Local\PreEmptive Solutions"&lt;br /&gt;oFSO.CreateFolder sup &amp;amp; "\AppData\Local\PreEmptive Solutions\Dotfuscator Community Edition"&lt;br /&gt;oFSO.CreateFolder sup &amp;amp; "\AppData\Local\PreEmptive Solutions\Dotfuscator Community Edition\5.0"&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;oFSO.CopyFile sCurDir &amp;amp; "\dfusrprf.xml" , sup &amp;amp; "\AppData\Local\PreEmptive Solutions\Dotfuscator Community Edition\5.0\" , OverwriteExisting&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Arpsuppress64.reg:&lt;/strong&gt; Suppress Add/Remove Program (ARP) Entries in 64 bit&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;Windows Registry Editor Version 5.00&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall]&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Help Viewer 1.0]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Team Foundation Server 2010 Object Model - ENU]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Visual Studio 2010 Tools for Office Runtime (x64)]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{034106B5-54B7-467F-B477-5B7DBB492624}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{0F37D969-1260-419E-B308-EF7D29ABDE20}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1AB7EDC5-D891-34C5-9FF1-BE6A85ACC44B}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1CB6C387-65A7-327F-B4A5-7DDC75A291AF}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1D1CEEF8-3741-45BD-8E77-963E1DEBDDD3}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{4A8CE6D7-4D52-43B9-970B-03FC75FAD667}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{5D068141-189F-39E2-A052-E40D4B561256}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{662014D2-0450-37ED-ABAE-157C88127BEB}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{8438EC02-B8A9-462D-AC72-1B521349C001}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{88BAE373-00F4-3E33-828F-96E89E5E0CB9}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{8FF0ACBD-17A5-3637-95F4-D7C69723E2BF}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{94D70749-4281-39AC-AD90-B56A0E0A402E}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{95120000-00B9-0409-1000-0000000FF1CE}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{B40EE88B-400A-4266-A17B-E3DE64E94431}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{D4AD39AD-091E-4D33-BB2B-59F6FCB8ADC3}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{DA67488A-2689-4F10-B90F-D2F6977509D6}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{F5079164-1DB9-3BDA-853B-F78AF67CE071}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FCADA26A-5672-31DD-BF0E-BA76ECF9B02D}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{0826F9E4-787E-481D-83E0-BC6A57B056D5}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{BBDE8A3D-64A2-43A6-95F3-C27B87DF7AC1}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft SQL Server 10 Release]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Arpsuppress32.reg:&lt;/strong&gt; Suppress ARP entries in 32 bit&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;Windows Registry Editor Version 5.00&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall]&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\KB968369]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Help Viewer 1.0]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft SQL Server 10]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft SQL Server 10 Release]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Team Foundation Server 2010 Object Model - ENU]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Visual Studio 2010 Tools for Office Runtime (x86)]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Visual Studio 2010 Professional - ENU]&lt;br /&gt;"DisplayName"="Microsoft_VisualStudio2010Pro_10.0.30319.1_0_EN_DTP_v1.0"&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Visual Studio Macro Tools]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{035400A4-29BD-3723-BEED-E2718A68CDE0}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{0DDCEC37-369C-484B-B16D-B4413FD42FB9}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{0F37D969-1260-419E-B308-EF7D29ABDE20}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{112C23F2-C036-4D40-BED4-0CB47BF5555C}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{14DD7530-CCD2-3798-B37D-3839ED6A441C}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{170DE2A7-4768-370C-9671-D8D17826EFBF}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1803A630-3C38-4D2B-9B9A-0CB37243539C}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{196E77C5-F524-4B50-BD1A-2C21EEE9B8F7}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{2012098D-EEE9-4769-8DD3-B038050854D4}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{2A2F3AE8-246A-4252-BB26-1BEB45627074}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{2D9FEBEE-F1B7-344F-BFDF-760E18332D96}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{33AE9E89-47C9-4A0D-9E9D-BDD6966A3804}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{3A9FC03D-C685-4831-94CF-4EDFD3749497}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{3BB19A2B-B9C5-3872-8FDF-3047CC9F9841}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{40416836-56CC-4C0E-A6AF-5C34BADCE483}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{41B31ABE-5A6E-498A-8F28-3BA3B8779A41}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{47C39E4A-28F2-33B1-B9B7-97F24E52D917}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{4815BD99-96A4-49FE-A885-DCF06E9E4E78}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{4A6F34E2-09E5-4616-B227-4A26A488A6F9}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{4E968D9C-21A7-4915-B698-F7AEB913541D}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{4F44B5AE-82A6-4A8A-A3E3-E24D489728E3}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{58721EC3-8D4E-4B79-BC51-1054E2DDCD10}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{6A86554B-8928-30E4-A53C-D7337689134D}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{6CDEAD7E-F8D8-37F7-AB6F-1E22716E30F3}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{6ED37A91-7710-3183-BE50-AB043FF6689E}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{729A3000-BC8A-3B74-BA5D-5068FE12D70C}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{78C3657E-742C-40B1-9F53-E5A921D40F17}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{97CE8B73-AA5A-4987-A1BE-50DD1A187478}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AC41D924-8C68-4BD5-A7A1-0AE4176C31A6}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{ACE28263-76A4-4BF5-B6F4-8BD719595969}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{B5153233-9AEE-4CD4-9D2C-4FAAC870DBE2}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{B7E38540-E355-3503-AFD7-635B2F2F76E1}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{B857D868-F8B0-43EE-BC2B-D9E5ED21F237}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{BC0464FA-A0BA-3E38-85BF-DC5B3A401F48}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C688457E-03FD-4941-923B-A27F4D42A7DD}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C6DD625F-4B61-4561-8286-87CA0275CEA1}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{C965F01C-76EA-4BD7-973E-46236AE312D7}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{CFEF48A8-BFB8-3EAC-8BA5-DE4F8AA267CE}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{D441BD04-E548-4F8E-97A4-1B66135BAAA8}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{DC3D6AFB-78B4-489F-81D7-30B66E0C2417}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{E5AE9031-79A5-4627-9641-BEFA82819B08}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{F3494AB6-6900-41C6-AF57-823626827ED8}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{F990B526-8F7C-46E0-B1F1-6C893A8B478F}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Arpsuppresswow64.reg: &lt;/strong&gt;Suppress entries which are going through wow6432 node in registry.&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;Windows Registry Editor Version 5.00&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall]&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Visual Studio Macro Tools]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{0DDCEC37-369C-484B-B16D-B4413FD42FB9}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{0E3DFC64-CC49-4BE2-8C9C-58EF129675DB}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{112C23F2-C036-4D40-BED4-0CB47BF5555C}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{14DD7530-CCD2-3798-B37D-3839ED6A441C}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1803A630-3C38-4D2B-9B9A-0CB37243539C}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{2012098D-EEE9-4769-8DD3-B038050854D4}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{2A2F3AE8-246A-4252-BB26-1BEB45627074}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{2D9FEBEE-F1B7-344F-BFDF-760E18332D96}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{3A9FC03D-C685-4831-94CF-4EDFD3749497}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{40416836-56CC-4C0E-A6AF-5C34BADCE483}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{41B31ABE-5A6E-498A-8F28-3BA3B8779A41}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{4E968D9C-21A7-4915-B698-F7AEB913541D}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{6A86554B-8928-30E4-A53C-D7337689134D}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{6CDEAD7E-F8D8-37F7-AB6F-1E22716E30F3}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{729A3000-BC8A-3B74-BA5D-5068FE12D70C}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{78C3657E-742C-40B1-9F53-E5A921D40F17}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{AC41D924-8C68-4BD5-A7A1-0AE4176C31A6}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{ACE28263-76A4-4BF5-B6F4-8BD719595969}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{B7E38540-E355-3503-AFD7-635B2F2F76E1}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{BC0464FA-A0BA-3E38-85BF-DC5B3A401F48}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{CFEF48A8-BFB8-3EAC-8BA5-DE4F8AA267CE}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{E5AE9031-79A5-4627-9641-BEFA82819B08}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;br /&gt; &lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{C688457E-03FD-4941-923B-A27F4D42A7DD}]&lt;br /&gt;"SystemComponent"=dword:00000001&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;ConfigurationFile.ini:&lt;/strong&gt; To Un-install SQL Server 2008 completely use below content”&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;;SQLSERVER2008 Configuration File&lt;br /&gt;[SQLSERVER2008]&lt;br /&gt; &lt;br /&gt;; Specifies a Setup work flow, like INSTALL, UNINSTALL, or UPGRADE. This is a required parameter.&lt;br /&gt; &lt;br /&gt;ACTION="Uninstall"&lt;br /&gt; &lt;br /&gt;; Specifies features to install, uninstall, or upgrade. The list of top-level features include SQL, AS, RS, IS, and Tools. The SQL feature will install the database engine, replication, and full-text. The Tools feature will install Management Tools, Books online, Business Intelligence Development Studio, and other shared components.&lt;br /&gt; &lt;br /&gt;FEATURES=SQLENGINE,REPLICATION,SNAC_SDK&lt;br /&gt; &lt;br /&gt;; Displays the command line parameters usage&lt;br /&gt; &lt;br /&gt;HELP="False"&lt;br /&gt; &lt;br /&gt;; Specifies that the detailed Setup log should be piped to the console.&lt;br /&gt; &lt;br /&gt;INDICATEPROGRESS="False"&lt;br /&gt; &lt;br /&gt;; Setup will not display any user interface.&lt;br /&gt; &lt;br /&gt;QUIET="True"&lt;br /&gt; &lt;br /&gt;; Setup will display progress only without any user interaction.&lt;br /&gt; &lt;br /&gt;QUIETSIMPLE="False"&lt;br /&gt; &lt;br /&gt;; Specifies that Setup should install into WOW64. This command line argument is not supported on an IA64 or a 32-bit system.&lt;br /&gt; &lt;br /&gt;X86="False"&lt;br /&gt; &lt;br /&gt;; Specify a default or named instance. MSSQLSERVER is the default instance for non-Express editions and SQLExpress for Express editions. This parameter is required when installing the SQL Server Database Engine (SQL), Analysis Services (AS), or Reporting Services (RS).&lt;br /&gt; &lt;br /&gt;INSTANCENAME="SQLEXPRESS"&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Setup.vbs: &lt;/strong&gt;To install the package with customizations&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;Dim oExplorer&lt;br /&gt;Dim oShell                   ' Windows Scripting Host shell&lt;br /&gt;Dim oFSO                            ' File system object&lt;br /&gt;Dim sCurDir, AppName, srd ' Script path&lt;br /&gt;Dim sWinDir ' Windows root path&lt;br /&gt;Dim sProgress ' Text in IE window&lt;br /&gt;Dim scpf86, spf, strAppMsg, oEnv&lt;br /&gt; &lt;br /&gt;'=======================================================================&lt;br /&gt;' Main&lt;br /&gt; &lt;br /&gt;On Error Resume Next&lt;br /&gt; &lt;br /&gt;Set oShell = CreateObject("WScript.Shell")&lt;br /&gt;Set oFSO = CreateObject("Scripting.FileSystemObject")&lt;br /&gt; &lt;br /&gt;sCurDir = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\") - 1)&lt;br /&gt; &lt;br /&gt;sWinDir = oShell.ExpandEnvironmentStrings ("%WinDir%")&lt;br /&gt; &lt;br /&gt;Const HKEY_LOCAL_MACHINE = &amp;amp;H80000002&lt;br /&gt; &lt;br /&gt;AppName = "Microsoft_VisualStudio2010Pro_10.0.30319.1"&lt;br /&gt; &lt;br /&gt;set oEnv = oShell.Environment("PROCESS")&lt;br /&gt;oEnv("SEE_MASK_NOZONECHECKS") = 1&lt;br /&gt; &lt;br /&gt;If Not oFSO.FolderExists (sWinDir &amp;amp; "\logs") Then oFSO.CreateFolder sWinDir &amp;amp; "\logs"&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;' Install Microsoft Visual Studio 2010&lt;br /&gt;oShell.Run chr(34) &amp;amp; sCurDir &amp;amp; "\Setup\setup.exe" &amp;amp; Chr(34) &amp;amp; " /q /full /norestart" , 1, 1&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;'#################### Installation Date ####################&lt;br /&gt; &lt;br /&gt;strComputer = "."&lt;br /&gt; &lt;br /&gt;Set objWMIService = GetObject("winmgmts:" _&lt;br /&gt; &amp;amp; "{impersonationLevel=impersonate}!\\" &amp;amp; strComputer &amp;amp; "\root\cimv2")&lt;br /&gt; &lt;br /&gt;Set colItems = objWMIService.ExecQuery("Select * from Win32_LocalTime")&lt;br /&gt; &lt;br /&gt;For Each objItem in colItems&lt;br /&gt;    mn= objItem.Month&lt;br /&gt;    dy= objItem.Day&lt;br /&gt;if Len(objItem.Day) =1 then&lt;br /&gt;dy="0" &amp;amp; objItem.Day&lt;br /&gt;end if&lt;br /&gt; &lt;br /&gt;If Len(objItem.Month) =1 then&lt;br /&gt;Mn="0" &amp;amp; objItem.Month&lt;br /&gt;end if&lt;br /&gt; &lt;br /&gt;mix=dy &amp;amp; "/" &amp;amp; Mn &amp;amp; "/" &amp;amp; objItem.Year&lt;br /&gt;Next&lt;br /&gt; &lt;br /&gt;' Const HKEY_LOCAL_MACHINE = &amp;amp;H80000002&lt;br /&gt; &lt;br /&gt;Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &amp;amp; _&lt;br /&gt;    strComputer &amp;amp; "\root\default:StdRegProv")&lt;br /&gt; &lt;br /&gt;strValueName2 = "Installation Date"&lt;br /&gt;strValue2 = mix&lt;br /&gt;‘This is for inventory key installation date, you can leave this&lt;br /&gt;‘oShell.Run "reg.exe IMPORT " &amp;amp; chr(34) &amp;amp; sCurDir &amp;amp; "\Inventory.reg" &amp;amp; chr(34)&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;If oFSO.FolderExists (srd &amp;amp; "\Program Files (x86)") Then&lt;br /&gt;                oShell.Run sWinDir &amp;amp; "\sysnative\reg.exe IMPORT " &amp;amp; chr(34) &amp;amp; sCurDir &amp;amp; "\arpsupress64.reg" &amp;amp; chr(34)&lt;br /&gt;                oShell.Run sWinDir &amp;amp; "\sysnative\reg.exe IMPORT " &amp;amp; chr(34) &amp;amp; sCurDir &amp;amp; "\arpsupresswow64.reg" &amp;amp; chr(34)&lt;br /&gt;Else&lt;br /&gt;                oShell.Run "reg.exe IMPORT " &amp;amp; chr(34) &amp;amp; sCurDir &amp;amp; "\arpsuprees32.reg" &amp;amp; chr(34)&lt;br /&gt;End If&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;strKeyPath2 = "SOFTWARE\XXXApps\Desktop\" &amp;amp; AppName&lt;br /&gt; &lt;br /&gt;oshell.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\XXXApps\Desktop\" &amp;amp; AppName &amp;amp; "\Installation Date", strValue2, "REG_SZ"&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;' ##################Copy Config File#########################&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;sCPF86=oShell.ExpandEnvironmentStrings ("%commonprogramfiles(x86)%")&lt;br /&gt; &lt;br /&gt;If oFSO.FolderExists(sCPF86) Then&lt;br /&gt;spf = oShell.ExpandEnvironmentStrings ("%programfiles(x86)%")&lt;br /&gt;Else&lt;br /&gt;spf = oShell.ExpandEnvironmentStrings  ("%programfiles%")&lt;br /&gt;End if&lt;br /&gt; &lt;br /&gt;Const OverwriteExisting = TRUE&lt;br /&gt; &lt;br /&gt;oFSO.CopyFile sCurDir &amp;amp; "\ConfigurationFile.ini" , spf &amp;amp; "\Microsoft Visual Studio 10.0\Common7\", OverwriteExisting&lt;br /&gt; &lt;br /&gt;oFSO.CopyFile sCurDir &amp;amp; "\VS2010_Uninstall-RTM.ENU.exe" , spf &amp;amp; "\Microsoft Visual Studio 10.0\Common7\", OverwriteExisting&lt;br /&gt; &lt;br /&gt;'####################Edit ARP Info##############################&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;If oFSO.FolderExists(sCPF86) Then&lt;br /&gt;strKeyPath11 = "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Visual Studio 2010 Professional - ENU"&lt;br /&gt;Else&lt;br /&gt;strKeyPath11 = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Visual Studio 2010 Professional - ENU"&lt;br /&gt;End if&lt;br /&gt; &lt;br /&gt;strValueName13 = "NoModify"&lt;br /&gt;dwvalue11 = 1&lt;br /&gt; &lt;br /&gt;strValueName14 = "NoRemove"&lt;br /&gt; &lt;br /&gt;oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath11,strValueName13,dwValue11&lt;br /&gt;oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath11,strValueName14,dwValue11&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;strStringValueName15 = "HelpLink"&lt;br /&gt;strStringValueName16 = "URLUpdateInfo"&lt;br /&gt;strStringValueName17 = "Readme"&lt;br /&gt; &lt;br /&gt;oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath11,strStringValueName15&lt;br /&gt;oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath11,strStringValueName16&lt;br /&gt;oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath11,strStringValueName17&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;'################Edit Shortcut###########################&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;spd =  oShell.ExpandEnvironmentStrings ("%ProgramData%")&lt;br /&gt; &lt;br /&gt;oFSO.DeleteFile(spd &amp;amp; "\Microsoft\Windows\Start Menu\Programs\Microsoft Visual Studio 2010\Microsoft Windows SDK Tools\Install Microsoft FXCop.lnk")&lt;br /&gt; &lt;br /&gt;oFSO.DeleteFile(spd &amp;amp; "\Microsoft\Windows\Start Menu\Programs\Microsoft Visual Studio 2010\Microsoft Visual Studio 2010 Documentation.lnk")&lt;br /&gt; &lt;br /&gt;oFSO.DeleteFile(spd &amp;amp; "\Microsoft\Windows\Start Menu\Programs\Microsoft Visual Studio 2010\Microsoft Windows SDK Tools\Tools Reference.lnk")&lt;br /&gt; &lt;br /&gt;' ###############Active Setup#############################&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;oFSO.CopyFile scurDir &amp;amp; "\USER.vbs" , spf &amp;amp; "\Microsoft Visual Studio 10.0\Common7\", OverwriteExisting&lt;br /&gt;oFSO.CopyFile scurDir &amp;amp; "\dfusrprf.xml" , spf &amp;amp; "\Microsoft Visual Studio 10.0\Common7\", OverwriteExisting&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;strKeyPath21 = "SOFTWARE\Microsoft\Active Setup\Installed Components\{0F37D969-1260-419E-B308-EF7D29ABDE20}"&lt;br /&gt;strValueName21 = "StubPath"&lt;br /&gt;strValue21 = spf &amp;amp; "\Microsoft Visual Studio 10.0\Common7\USER.vbs"&lt;br /&gt;oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath21&lt;br /&gt;oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath21,strValueName21,strValue21&lt;br /&gt; &lt;br /&gt;strValueName22 = "Version"&lt;br /&gt;strValue22 = "1,0"&lt;br /&gt;oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath21,strValueName22,strValue22&lt;br /&gt; &lt;br /&gt;oShell.Run chr(34) &amp;amp; scurDir &amp;amp; "\USER.vbs" &amp;amp; chr(34)&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Uninstall.vbs:&lt;/strong&gt; To Un-install MS Visual Studio Silently:&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;Dim oShell, oFSO, oReg&lt;br /&gt;Set oShell = CreateObject("WScript.Shell")&lt;br /&gt;Set oFSO = CreateObject("Scripting.FileSystemObject")&lt;br /&gt; &lt;br /&gt;On Error Resume Next&lt;br /&gt; &lt;br /&gt;sWindir = oShell.ExpandEnvironmentStrings("%windir%")&lt;br /&gt; &lt;br /&gt;sCPF86=oShell.ExpandEnvironmentStrings ("%commonprogramfiles(x86)%")&lt;br /&gt; &lt;br /&gt;If oFSO.FolderExists(sCPF86) Then&lt;br /&gt;spf = oShell.ExpandEnvironmentStrings ("%programfiles(x86)%")&lt;br /&gt;Else&lt;br /&gt;spf = oShell.ExpandEnvironmentStrings  ("%programfiles%")&lt;br /&gt;End if&lt;br /&gt; &lt;br /&gt;sys32 = sWindir &amp;amp; "\system32"&lt;br /&gt; &lt;br /&gt;set oEnv = oShell.Environment("PROCESS")&lt;br /&gt;oEnv("SEE_MASK_NOZONECHECKS") = 1&lt;br /&gt; &lt;br /&gt;'MsgBox "The uninstallation of the application will take approximately 45 minutes to complete." , 0, "Visual Studio 2010 Pro"&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;' ################ Remove Active Setup ####################&lt;br /&gt;Const HKEY_LOCAL_MACHINE = &amp;amp;H80000002&lt;br /&gt; &lt;br /&gt;strComputer = "."&lt;br /&gt; &lt;br /&gt;Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &amp;amp; _&lt;br /&gt;    strComputer &amp;amp; "\root\default:StdRegProv")&lt;br /&gt; &lt;br /&gt;strKeyPath1 = "Software\Microsoft\Active Setup\Installed Components\{D7DAD1E4-45F4-3B2B-899A-EA728167EC4F}"&lt;br /&gt;oReg.DeleteKey HKEY_LOCAL_MACHINE, strKeyPath1&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;'###################Uninstall################&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;If oFSO.FolderExists(sCPF86) Then&lt;br /&gt;spf64 = oShell.ExpandEnvironmentStrings  ("%programfiles%")&lt;br /&gt;oShell.Run chr(34) &amp;amp; spf64 &amp;amp; "\Microsoft SQL Server\100\Setup Bootstrap\Release\setup.exe" &amp;amp; chr(34) &amp;amp; " /ConfigurationFile=" &amp;amp; chr(34) &amp;amp; spf &amp;amp; "\Microsoft Visual Studio 10.0\Common7\ConfigurationFile.ini" &amp;amp; chr(34) ,0 ,1&lt;br /&gt;oFSO.DeleteFolder(spf64 &amp;amp; "\Microsoft SQL Server\100")&lt;br /&gt;Else&lt;br /&gt;oShell.Run chr(34) &amp;amp; spf &amp;amp; "\Microsoft SQL Server\100\Setup Bootstrap\Release\setup.exe" &amp;amp; chr(34) &amp;amp; " /ConfigurationFile=" &amp;amp; chr(34) &amp;amp; spf &amp;amp; "\Microsoft Visual Studio 10.0\Common7\ConfigurationFile.ini" &amp;amp; chr(34) ,0 ,1&lt;br /&gt;oFSO.DeleteFolder(spf &amp;amp; "\Microsoft SQL Server\100")&lt;br /&gt;End if&lt;br /&gt; &lt;br /&gt;oShell.Run chr(34) &amp;amp; spf &amp;amp; "\Microsoft Visual Studio 10.0\Common7\VS2010_Uninstall-RTM.ENU.exe" &amp;amp; chr(34) &amp;amp; " /q /full" , 0 ,1&lt;br /&gt; &lt;br /&gt;code1 = "{B7E38540-E355-3503-AFD7-635B2F2F76E1}"&lt;br /&gt;code2 = "{4F44B5AE-82A6-4A8A-A3E3-E24D489728E3}"&lt;br /&gt;code3 = "{B40EE88B-400A-4266-A17B-E3DE64E94431}"&lt;br /&gt;code4 = "{BBDE8A3D-64A2-43A6-95F3-C27B87DF7AC1}"&lt;br /&gt; &lt;br /&gt;oshell.run sys32 &amp;amp; "\msiexec.exe /x " &amp;amp; code1 &amp;amp; " REBOOT=ReallySuppress /qn /l*v " &amp;amp; chr(34) &amp;amp; sWindir &amp;amp; "\Logs\MicrosoftVisualStudio_2010_Uninstall.log" &amp;amp; chr(34) , 1, 1&lt;br /&gt;oshell.run sys32 &amp;amp; "\msiexec.exe /x " &amp;amp; code3 &amp;amp; " REBOOT=ReallySuppress /qn /l*v " &amp;amp; chr(34) &amp;amp; sWindir &amp;amp; "\Logs\MicrosoftVisualS_2010_Uninstall.log" &amp;amp; chr(34) , 1, 1&lt;br /&gt;oshell.run sys32 &amp;amp; "\msiexec.exe /x " &amp;amp; code4 &amp;amp; " REBOOT=ReallySuppress /qn /l*v " &amp;amp; chr(34) &amp;amp; sWindir &amp;amp; "\Logs\SQLServer2008NativeClient_2010_Uninstall.log" &amp;amp; chr(34) , 1, 1&lt;br /&gt; &lt;br /&gt;If Not oFSO.FolderExists(sCPF86) Then&lt;br /&gt;oshell.run sys32 &amp;amp; "\msiexec.exe /x " &amp;amp; code2 &amp;amp; " REBOOT=ReallySuppress /qn /l*v+ " &amp;amp; chr(34) &amp;amp; sWindir &amp;amp; "\Logs\MicrosoftSQLServer_2008SetupSupportFiles_Uninstall.log" &amp;amp; chr(34) , 1, 1&lt;br /&gt;End if&lt;br /&gt; &lt;br /&gt;' #################Remove Registry###############################&lt;br /&gt; &lt;br /&gt;strKeyPath = "SOFTWARE\XXXApps\Desktop\Microsoft_VisualStudio2010Pro_10.0.30319.1_0_EN_DTP_v1.0"&lt;br /&gt; &lt;br /&gt;oReg.DeleteKey HKEY_LOCAL_MACHINE, strKeyPath&lt;br /&gt; &lt;br /&gt;'################## Clean Uninstall ##############################&lt;br /&gt; &lt;br /&gt;spd = oShell.ExpandEnvironmentStrings ("%Programdata%")&lt;br /&gt;sup = oShell.ExpandEnvironmentStrings ("%UserProfile%")&lt;br /&gt; &lt;br /&gt;oFSO.DeleteFolder(spf &amp;amp; "\Microsoft Visual Studio 10.0")&lt;br /&gt;oFSO.DeleteFolder(sup &amp;amp; "\Documents\Visual Studio 2010")&lt;br /&gt;oFSO.DeleteFolder (spd &amp;amp; "\Microsoft\Windows\Start Menu\Programs\Microsoft Visual Studio 2010")&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;'Msgbox "Uninstallation of the application is completed. Please reboot your system." , 0, "Visual Studio 2010 Pro"&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;oEnv.Remove("SEE_MASK_NOZONECHECKS")&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Uninstall.bat:&lt;/strong&gt; To uninstall through deployment tool, you should use this .bat file so that it removes SQL and all other components as well. I have made this batch script so that it runs on both 32 and 64 bit machines:&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;@echo off&lt;br /&gt; &lt;br /&gt;if exist %windir%\sysnative\cmd.exe (&lt;br /&gt;cd %windir%\sysnative )&lt;br /&gt;SET SUBDIR=%~dp0&lt;br /&gt;wscript.exe %SUBDIR%Uninstall.vbs&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-8243248936208518037?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/8243248936208518037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=8243248936208518037' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/8243248936208518037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/8243248936208518037'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2011/11/repackaging-microsoft-visual-studio.html' title='Repackaging Microsoft Visual Studio 2010 Pro (Or any other version)'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-3620720407018893513</id><published>2011-11-02T17:06:00.000-07:00</published><updated>2011-12-04T19:49:03.529-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='Interop'/><category scheme='http://www.blogger.com/atom/ns#' term='Frequently asked questions'/><category scheme='http://www.blogger.com/atom/ns#' term='FAQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='Interview'/><category scheme='http://www.blogger.com/atom/ns#' term='COM'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Installer'/><category scheme='http://www.blogger.com/atom/ns#' term='MSIAssembly'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='questions'/><title type='text'>Frequently asked Questions about COM and Windows installer (MSI) / Application Packaging</title><content type='html'>&lt;b&gt;What does the common language runtime do? &lt;/b&gt;&lt;br /&gt;The common language runtime manages the execution of code and provides services such as cross-language integration, code access security, object lifetime management, and debugging and profiling support. Search for "Common Language Runtime" in the MSDN Library (&lt;a href="http://msdn.microsoft.com/library/"&gt;msdn.microsoft.com/library/&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What's the difference between managed and unmanaged code? &lt;/b&gt;&lt;br /&gt;Code developed with a language compiler that targets the common language runtime is called managed code. All code based on Microsoft intermediate language (MSIL) executes as managed code. Managed code is self-describing; it contains metadata that describes every element managed by the common language runtime. The runtime uses the metadata to provide services. &lt;br /&gt;Code that runs outside the runtime and does not contain metadata is called unmanaged code. Examples of unmanaged code are COM components, ActiveX interfaces, and Win32 API functions. Unmanaged code executes in the common language runtime environment with minimal services. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Can I add managed code to an existing application? &lt;/b&gt;&lt;br /&gt;Few developers are able to rewrite existing applications completely as managed (.NET) code. Instead, you can combine managed and unmanaged components in one installation. Code that contains a mix of managed and unmanaged elements is called interoperable code. &lt;br /&gt;The common language runtime supports COM interoperability (interop). For backward compatibility, COM interop provides access to existing COM components without requiring you to modify the original components. COM interop also enables your COM clients to access managed code as easily as they access other COM objects. This is accomplished by adding information to the system registry so .NET components are called as though they were COM components. At runtime, the common language runtime marshals data between COM objects and managed objects as needed. &lt;br /&gt;Search for "Interoperating with Unmanaged Code" in the MSDN Library (&lt;a href="http://msdn.microsoft.com/library/"&gt;msdn.microsoft.com/library/&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is an assembly?&lt;/b&gt; &lt;br /&gt;An assembly is the primary building block of a .NET application. An assembly contains its own naming, binding, versioning, deployment, and configuration information. It consists of 2 elements: a manifest, which is the meta data that describes information about the assembly and any resources it depends on; and a set of instructions in the form of Microsoft Intermediate Language (MSIL) code that is executed when the assembly is referenced. &lt;br /&gt;You can group assembly elements into a single file assembly, which incorporates the manifest into a portable executable (PE) file, which can be an .EXE or .DLL, with the source code. You also can create a multifile assembly consisting of modules of compiled code, resources, or other files required by the application. In a multifile assembly, the manifest can be a standalone file or it can be incorporated into one of the PE files in the assembly. &lt;br /&gt;&lt;br /&gt;When you add a .NET assembly to an installation, Windows Installer Editor creates entries in the MsiAssembly and MsiAssemblyName tables. &lt;br /&gt;See Assemblies in the Windows Installer SDK Help. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How does .NET reduce file sharing conflicts?&lt;/b&gt; &lt;br /&gt;An important benefit of .NET installations is the reduction of file sharing conflicts. With the common language runtime, the assembly is described by a manifest; the registry is no longer relied upon for storing and accessing the COM activation data. This allows components to be fully isolated from each other. &lt;br /&gt;Assembly sharing is accomplished in several ways: &lt;br /&gt;a) &lt;b&gt;Global Assembly Cache&lt;/b&gt; &lt;br /&gt;To install .NET assemblies that are intended to be shared by many applications on the computer, make sure they are strongly named and install them into the Global Assembly Cache, which is a machine-wide code cache. Do not install assemblies into the Global Assembly Cache unless they specifically need to be shared. The Global Assembly Cache is available only if the .NET Framework is installed on the destination computer. &lt;br /&gt;b) &lt;b&gt;Side-by-side&lt;/b&gt; &lt;br /&gt;To safely share COM or Win32 assemblies among multiple applications and to minimize .DLL conflicts, use side-by-side assembly sharing. Instead of having a single version of an assembly that assumes backward compatibility with all applications, side-by-side assembly sharing enables multiple versions of a COM or Win32 assembly to run simultaneously on the destination computer. Side-by-side assembly sharing is available only on Windows XP or later. See Side-by-Side Assemblies in the Windows Installer SDK Help. &lt;br /&gt;c) &lt;b&gt;Private assembly&lt;/b&gt; &lt;br /&gt;To reserve a Win32 assembly for the exclusive use of one application, install it in a directory that is private to the application, typically the application directory. This is called a private assembly. The dependency of the application on the private assembly is specified in an application manifest file. On operating systems earlier than Windows XP, a copy of the private assembly and a .local file is installed into a private directory for the exclusive use of the application. A version of the assembly is also globally registered on the system and made available for any application that binds to it. The global version of the assembly can be the version installed with the application or an earlier version. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;I thought .NET meant I could use XCOPY to install applications without registration. Why do I need to build a Windows Installer installation? &lt;/b&gt;&lt;br /&gt;For a .NET application that uses only managed code and private assemblies, the installation process can be as simple as copying files to the destination computer. Most developers, however, still need to create a compressed, single-file installation that is easy to deploy and that provides a friendly interface to the end user. &lt;br /&gt;.NET applications that use shared assemblies, or that have a mix of managed and unmanaged code, cannot be installed via XCOPY. You should use the Windows Installer service for installations that do any of the following: &lt;br /&gt;a)Install COM files &lt;br /&gt;b)Install assemblies to the Global Assembly Cache &lt;br /&gt;c)Require user information during the installation &lt;br /&gt;d)Require security &lt;br /&gt;e)Create a shortcut &lt;br /&gt;f)Require elevated privileges to install on a locked-down computer &lt;br /&gt;&lt;br /&gt;By creating a Windows Installer installation for your .NET applications, you can take advantage of the services Windows Installer provides: installation, repair, and removal of assemblies; roll back; install-on-demand; patching; and advertisement. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How does Windows Installer Editor support .NET installations?&lt;/b&gt; &lt;br /&gt;Windows Installer Editor lets you install .NET assemblies into the Global Assembly Cache, or as side-by-side or private assemblies. It also lets you create mixed installations by registering .NET assemblies with COM. &lt;br /&gt;If the .NET Framework is installed on your computer, Windows Installer Editor can automate the process as follows: &lt;br /&gt;a) Find all files in multifile assemblies and add them to the installation. &lt;br /&gt;b) Scan for assembly dependencies and add them to the installation. &lt;br /&gt;c) Determine attributes for registering the assembly files and add them to the MsiAssemblyName table. &lt;br /&gt;d) Add registry keys for COM interop.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-3620720407018893513?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/3620720407018893513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=3620720407018893513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/3620720407018893513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/3620720407018893513'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2011/11/frequently-asked-questions-about-com.html' title='Frequently asked Questions about COM and Windows installer (MSI) / Application Packaging'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-1472862235092779514</id><published>2011-09-08T22:58:00.000-07:00</published><updated>2011-09-13T16:22:09.678-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='[SystemFolder]'/><category scheme='http://www.blogger.com/atom/ns#' term='x64'/><category scheme='http://www.blogger.com/atom/ns#' term='[System64Folder]'/><category scheme='http://www.blogger.com/atom/ns#' term='x86'/><category scheme='http://www.blogger.com/atom/ns#' term='WIN64DUALFOLDERS'/><category scheme='http://www.blogger.com/atom/ns#' term='[ProgramFilesFolder]'/><category scheme='http://www.blogger.com/atom/ns#' term='64-bit'/><category scheme='http://www.blogger.com/atom/ns#' term='32-bit'/><category scheme='http://www.blogger.com/atom/ns#' term='[ProgramFiles64Folder]'/><title type='text'>Creating MSI for x64 and x86 machines</title><content type='html'>For some time now I have been packaging for x64 and x86 machines, and have faced numerous issues while creating the MSI for x64 machines. Well MSI will mostly work in x86 because of less complexity of 32 bit machine. There always seems to be a problem when you try to install the application in 64 bit environment.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Registry Structure:&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;The Registries install differently in 32 and 64 bit machines. in 64 bit machines, there is a provision to install 32 bit applications registry and this goes in SysWOW64 folder.&lt;br /&gt;By default all 32 bit installers install the registry in SysWOW64 hive. If you need to install the registries in normal mode as in directly in the registry as it was in 32 bit machines, then you need to change the Component in your MSI to 64 bit component. This will ensure that your registries are to be installed as 64 bit and not 32 bit.&lt;br /&gt;You might face issue in compiling your 32 bit application with a 64 bit component. I would suggest you to compile your Application with 32 bit component and change the component attribute with ORCA later on.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Folder Structure:&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;I would like to share the 2 basic folders which are different in 64-bit machines.&lt;br /&gt;• &lt;b&gt;Program Files:&lt;/b&gt; There are two folders for Program Files in 64 bit machines and they are &lt;b&gt;Program Files&lt;/b&gt; and &lt;b&gt;Program Files (x86). &lt;/b&gt;All applications which have 64 bit installer are installed in "Program Files" folder, whereas all 32 bit applications are by default installed in "Program Files (x86) folder.&lt;br /&gt;&lt;br /&gt;•      &lt;b&gt;System folder:&lt;/b&gt; The System 32 folder also behaves in the similar manner as Program Files and in this for 64 bit installers, the files which are to be placed in System 32 are directed to "System32" Folder only. The 32 bit installers however place these file in "SysWOW64" Folder.&lt;br /&gt;&lt;br /&gt;Now the question comes to package the applications in such a way that we get desired output. I will list down certain scenarios and how to handle them in packaging. I hope to cover most as in whatever issues I have faced and your feedback for more scenarios is most welcome.&lt;br /&gt;a) &lt;b&gt;Scenario:&lt;/b&gt; In a capture application, files are getting installed in SysWOW64/Program Files (x86) folder when you want the files to be placed in System32/Program Files folder.&lt;br /&gt;&lt;b&gt;Resolution:&lt;/b&gt; You need to check the Summary section in your WISE Package Studio. If your package is marked as Intel,1033 (or Intel,xxxx), then you need to change this to x64,1033 (or x64,xxxx).&lt;br /&gt;By doing this you are changing the installer type from 32 bit to 64 bit. You cannot install this package now on 32 bit machines and you will have to create a separate installer for that. I have done a lot of research and this only seems to be the most viable option as of now.&lt;br /&gt;Also you need to change your directory in WISE package Studio/MSI.&lt;br /&gt;There are additions of new already defined folders in MSI for 64 bit support. These folders are explained below:&lt;br /&gt;[ProgramFiles64Folder] will redirect files to “Program Files" folder and [ProgramFilesFolder] will redirect the files to "Program Files (x86)" folder in 64 bit machines.&lt;br /&gt;[System64Folder] will redirect files to  "C:\Windows\System32" folder and [SystemFolder] will redirect the files to "C:\Windows\SysWOW64" folder in 64 bit machines.&lt;br /&gt;Choose accordingly in your package. If there is still some problems, you can try making the components to be 64-Bit and try again.&lt;br /&gt;&lt;br /&gt;b) &lt;b&gt;Scenario:&lt;/b&gt; There is a vendor MSI which is 32 bit and install files to "Program Files (x86)" Folder in x64 machine. But due to the functionality of the application, you would require it to install to "Program Files" folder. &lt;br /&gt;&lt;b&gt;Resolution:&lt;/b&gt; If you are thinking that you will change the Summary section in MST file from Intel,1033 to x64,1033 and it will work, well you are thinking in right direction, but it does not work. You will have to change the summary section in MSI directly through ORCA and then do rest of the customizations in MST.&lt;br /&gt;WIN64DUALFOLDERS determines what happens to the path variables while installation of an MSI. Based on the application type as in 64 bit or 32 bit, the paths are determined. &lt;br /&gt;If it is a 64 bit installer then you will see something like this in the log file:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;WIN64DUALFOLDERS: Substitution in 'C:\Program Files (x86)\ABC\XYZ\' folder had been blocked by the 1 mask argument (the folder pair's iSwapAttrib member = 0).&lt;br /&gt;This means that the file system redirection will not happen. All paths will be defined as desired. &lt;br /&gt;&lt;/i&gt;&lt;br /&gt;For example:&lt;br /&gt;ProgramFilesFolder will be C:\Program Files (x86)&lt;br /&gt;ProgramFiles64Folder will be C:\Program Files&lt;br /&gt;and so on...&lt;br /&gt;&lt;br /&gt;The end result would be as expected.&lt;br /&gt;The 64-bit msiexec.exe is used in the whole process.&lt;br /&gt;&lt;br /&gt;If it is a 32 bit installer then you will see something like this in the log file:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;WIN64DUALFOLDERS: 'C:\Program Files (x86)\' will substitute 17 characters in 'C:\Program Files\' folder path. (mask argument = 0, the folder pair's iSwapAttrib member = 0).&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;This means:&lt;br /&gt;ProgramFilesFolder will be C:\Program Files (x86)&lt;br /&gt;ProgramFiles64Folder will become C:\Program Files (x86)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I hope this will help you in Packaging your applications for 64 bit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-1472862235092779514?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/1472862235092779514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=1472862235092779514' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/1472862235092779514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/1472862235092779514'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2011/09/creating-msi-for-x64-and-x86-machines.html' title='Creating MSI for x64 and x86 machines'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-1150846169177513358</id><published>2011-08-16T19:29:00.000-07:00</published><updated>2011-08-16T19:29:09.957-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wix'/><category scheme='http://www.blogger.com/atom/ns#' term='Field shortcut of table shortcut: Error retrieving shortcut of table'/><category scheme='http://www.blogger.com/atom/ns#' term='issue'/><category scheme='http://www.blogger.com/atom/ns#' term='Installshield'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS Express'/><category scheme='http://www.blogger.com/atom/ns#' term='WISE'/><category scheme='http://www.blogger.com/atom/ns#' term='shortcut'/><title type='text'>Shortcut creation issue in Installshield/WISE Package Studio</title><content type='html'>&lt;br /&gt;IIS Express 7.5 is a vendor MSI package and the MSI is created by WiX. Though there is no problem as such while &lt;br /&gt;&lt;br /&gt;customizing this application, but I found an issue while adding a shortcut to this application. &lt;br /&gt;While creating IIS Express 7.5 package recently, I faced an issue that I was not able to add shortcut in this &lt;br /&gt;&lt;br /&gt;application.&lt;br /&gt;&lt;br /&gt;This for the matter of fact I realized that the shortcut table did not exist in this application. The error which &lt;br /&gt;&lt;br /&gt;I was getting was "Field shortcut of table shortcut: Error retrieving shortcut of table"&lt;br /&gt;To get this error fixed, I added the shortcut table and following entries in _Validation table:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-NM0p3fIRVSo/TkslKsyjcoI/AAAAAAAAHC4/n8XLUSzzr7w/s1600/shortcut.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="72" width="320" src="http://3.bp.blogspot.com/-NM0p3fIRVSo/TkslKsyjcoI/AAAAAAAAHC4/n8XLUSzzr7w/s320/shortcut.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;After adding this I added CreateShortcuts Action in InstallExecuteSequence Table at Sequence 4500. This was &lt;br /&gt;&lt;br /&gt;because, since there was no shortcut table, the sequence too was missing from MSI. Due to this the shortcut was &lt;br /&gt;&lt;br /&gt;not getting created.&lt;br /&gt;&lt;br /&gt;Once I did both these things, the application is installed fine with the shorcut.&lt;br /&gt;&lt;br /&gt;This can be used with other missing tables as well. We need to add the entries in _Validation table for all the &lt;br /&gt;&lt;br /&gt;tables which are missing for its every corresponding column.&lt;br /&gt;&lt;br /&gt;Hope this will help you if you face similar issue in future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-1150846169177513358?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/1150846169177513358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=1150846169177513358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/1150846169177513358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/1150846169177513358'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2011/08/shortcut-creation-issue-in.html' title='Shortcut creation issue in Installshield/WISE Package Studio'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-NM0p3fIRVSo/TkslKsyjcoI/AAAAAAAAHC4/n8XLUSzzr7w/s72-c/shortcut.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-7024930904092630457</id><published>2011-08-11T22:19:00.000-07:00</published><updated>2011-08-11T22:19:51.911-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='suppress'/><category scheme='http://www.blogger.com/atom/ns#' term='ShellExecute'/><category scheme='http://www.blogger.com/atom/ns#' term='file'/><category scheme='http://www.blogger.com/atom/ns#' term='AES'/><category scheme='http://www.blogger.com/atom/ns#' term='network installation'/><category scheme='http://www.blogger.com/atom/ns#' term='Open File prompt'/><category scheme='http://www.blogger.com/atom/ns#' term='Environment Variables'/><category scheme='http://www.blogger.com/atom/ns#' term='SEE_MASK_NOZONECHECKS'/><category scheme='http://www.blogger.com/atom/ns#' term='Open'/><category scheme='http://www.blogger.com/atom/ns#' term='Prompt'/><title type='text'>Installing executable from remote location by suppressing the Open File Prompt</title><content type='html'>Many times while running a script/application exe from a network we get an error that the application is not from a trusted source and if we want to install the particular application or not.&lt;br /&gt;This error comes because the source is not digitally signed and the Operating System prompts to ask from user if it is a known source to user or if something malicious is being run from network. This is just to protect the end users from the malicious software or Virus attack.&lt;br /&gt;&lt;br /&gt;Technically,&lt;br /&gt;&lt;br /&gt;This behavior was introduced in Windows XP SP2 because of the addition of the Attachment Execution Services (AES). Every program that is run by using the ShellExecute() API passes through AES. AES considers the downloaded update file to be from the Internet Zone. Therefore, AESdisplays the Open File - Security Warning dialog box. AES examines the file to see whether the file has a file stream of the type Zone.Identifier. Then AES determines what zone the file is from and what level of protection to apply when the file is run.&lt;br /&gt;&lt;br /&gt;You can use the below code to suppress this message for your application to work fine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;set oShell= CreateObject("Wscript.Shell")&lt;br /&gt;&lt;br /&gt;set oEnv = oShell.Environment("PROCESS")&lt;br /&gt;&lt;br /&gt;oEnv("SEE_MASK_NOZONECHECKS") = 1&lt;br /&gt;&lt;br /&gt;&amp;ltYour Code here&amp;gt&lt;br /&gt;&lt;br /&gt;oEnv.Remove("SEE_MASK_NOZONECHECKS")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please note that you should not set this as a permanent environment variable as it will disable all Zone Checking and it is not recommended.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-7024930904092630457?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/7024930904092630457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=7024930904092630457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/7024930904092630457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/7024930904092630457'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2011/08/installing-executable-from-remote.html' title='Installing executable from remote location by suppressing the Open File Prompt'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-7223241435545696818</id><published>2011-08-11T18:11:00.000-07:00</published><updated>2011-08-11T18:11:30.634-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Office 2003'/><category scheme='http://www.blogger.com/atom/ns#' term='getabsolutepath'/><category scheme='http://www.blogger.com/atom/ns#' term='getfileversion'/><category scheme='http://www.blogger.com/atom/ns#' term='Check'/><category scheme='http://www.blogger.com/atom/ns#' term='Word 2007'/><title type='text'>VB Script to check for Microsoft Office 2003 and Word 2007</title><content type='html'>I had written this script to check the presence of MS Office 2003 and Word 2007 on a machine before proceeding for installation. Here is the code:&lt;br /&gt;&lt;br /&gt;officepath11= sProgramFilesDir &amp; "\Microsoft Office\Office11\"&lt;br /&gt;officepath12= sProgramFilesDir &amp; "\Microsoft Office\Office12\"&lt;br /&gt;&lt;br /&gt;'set File System Object&lt;br /&gt;set fso=createobject("scripting.filesystemobject")&lt;br /&gt;&lt;br /&gt;'Check if file exists for Office 2003 and if yes then its version&lt;br /&gt;path11 = fso.GetAbsolutePathName("C:\Program Files (x86)\Microsoft Office\Office11\winword.exe")&lt;br /&gt;&lt;br /&gt;if (fso.FileExists(path11)) then&lt;br /&gt;	returnstring11=fso.getfileversion(officepath11 &amp; "winword.exe")&lt;br /&gt;else&lt;br /&gt;	returnstring11="Null"&lt;br /&gt;end if&lt;br /&gt;&lt;br /&gt;'Check if file exists for Word 2007 and if yes then its version&lt;br /&gt;path12 = fso.GetAbsolutePathName("C:\Program Files (x86)\Microsoft Office\Office12\winword.exe")&lt;br /&gt;&lt;br /&gt;if (fso.FileExists(path12)) then&lt;br /&gt;	returnstring12=fso.getfileversion(officepath12 &amp; "winword.exe")&lt;br /&gt;else&lt;br /&gt;	returnstring12="Null"&lt;br /&gt;end if	&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;arr11=split(returnstring11,".")&lt;br /&gt;arr12=split(returnstring12,".")&lt;br /&gt;&lt;br /&gt;if (arr11(0)="11" AND arr12(0)="12") then&lt;br /&gt;	'msgbox "Office 2003 and word 2007 both are installed, continue with script below"&lt;br /&gt;else&lt;br /&gt;if (arr11(0)="11" AND arr12(0)="Null") then&lt;br /&gt;	msgbox "Please install Word 2007 before installing this application"&lt;br /&gt;	WScript.Quit&lt;br /&gt;else&lt;br /&gt;if (arr11(0)="Null" AND arr12(0)="12") then&lt;br /&gt;	msgbox "Please install Office 2003 before installing this application"&lt;br /&gt;	WScript.Quit&lt;br /&gt;else&lt;br /&gt;if (arr11(0)="Null" AND arr12(0)="Null") then&lt;br /&gt;	msgbox "Please install Office 2003 and Word 2007 before installing this application"&lt;br /&gt;	WScript.Quit&lt;br /&gt;end if&lt;br /&gt;end if&lt;br /&gt;end if&lt;br /&gt;end if&lt;br /&gt;&lt;br /&gt;set fso=nothing&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-7223241435545696818?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/7223241435545696818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=7223241435545696818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/7223241435545696818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/7223241435545696818'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2011/08/vb-script-to-check-for-microsoft-office.html' title='VB Script to check for Microsoft Office 2003 and Word 2007'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-8876674521307876950</id><published>2011-08-10T21:45:00.001-07:00</published><updated>2011-08-10T22:03:33.621-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='launch'/><category scheme='http://www.blogger.com/atom/ns#' term='issue'/><category scheme='http://www.blogger.com/atom/ns#' term='close'/><category scheme='http://www.blogger.com/atom/ns#' term='App-V'/><category scheme='http://www.blogger.com/atom/ns#' term='shortcut'/><category scheme='http://www.blogger.com/atom/ns#' term='OSD'/><title type='text'>Issues while launching and closing of App-V shortcuts</title><content type='html'>While launching your App-V shortcut, if you notice that the buffering launch on bottom right says 100% but the &lt;br /&gt;&lt;br /&gt;launch does not disappear as per normal behaviour then you need to do some modification in your osd file.&lt;br /&gt;&lt;br /&gt;This possible is a cause if your application is Java related. You need to modify the Subsystem value in your osd &lt;br /&gt;&lt;br /&gt;file.&lt;br /&gt;By default the osd file has this:&lt;br /&gt;&lt;br /&gt;&amp;ltsubsystem VALUE = "windows"/&amp;gt&lt;br /&gt;&lt;br /&gt;You need to change this value to &lt;br /&gt;&lt;br /&gt;&amp;ltsubsystem VALUE = "console"/&amp;gt&lt;br /&gt;&lt;br /&gt;If you face a similar problem while closing the application or your application does not close completely, then &lt;br /&gt;&lt;br /&gt;you need to again tweek your osd file.&lt;br /&gt;&lt;br /&gt;By default you have following in your OSD file:&lt;br /&gt;&lt;br /&gt;&amp;ltvirtualenv TERMINATECHILDREN="FALSE"&amp;gt&lt;br /&gt;&lt;br /&gt;You need to change the value as below:&lt;br /&gt;&lt;br /&gt;&amp;ltvirtualenv TERMINATECHILDREN="TRUE"&amp;gt&lt;br /&gt;&lt;br /&gt;This will terminate the any child application which is associated with this application and will help to shut &lt;br /&gt;&lt;br /&gt;your application down.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-8876674521307876950?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/8876674521307876950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=8876674521307876950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/8876674521307876950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/8876674521307876950'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2011/08/issues-while-launching-and-closing-of.html' title='Issues while launching and closing of App-V shortcuts'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-6153076212207184884</id><published>2011-07-27T17:04:00.001-07:00</published><updated>2011-07-27T17:04:34.247-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Application Virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='App-V'/><title type='text'>Application Virtualization</title><content type='html'>New technologies, new ways of working is changing our everyday environment. &lt;br /&gt;Application Virtualization is the hot topic these days with Windows 7 coming in picture and organizations across &lt;br /&gt;&lt;br /&gt;the globe are integrating App-V in their portfolio of delivery mechanism.&lt;br /&gt;&lt;br /&gt;It has been quite some time now that I started work on App-V but did not get a chance to post things on my blog &lt;br /&gt;&lt;br /&gt;as my blog was primarily focussed on MSI. I have finally decided to post App-V posts as well on my blog from now &lt;br /&gt;&lt;br /&gt;onwards. There are lots of issues we face in everyday work regarding the technology and we try to lookup for &lt;br /&gt;&lt;br /&gt;solutions on internet. As a cliche: If someone has already invented the wheel, there is no point re-inventing it.&lt;br /&gt;The sole purpose of my blog is to help others with whatever I learn. I have got numerous solutions for problems &lt;br /&gt;&lt;br /&gt;which I have faced and I really thank all those who had posted their solutions on net. This blog is just my way &lt;br /&gt;&lt;br /&gt;to contribute back to the society.&lt;br /&gt;&lt;br /&gt;All you people out there, please help by commenting, voting, propagating and sharing my blog with your friends &lt;br /&gt;&lt;br /&gt;and collegues but with due credit and acknowledgement to the material posted here with my name and blog url as I &lt;br /&gt;&lt;br /&gt;still do hold the copyright of the posts here.&lt;br /&gt;&lt;br /&gt;Thanks all for your support.&lt;br /&gt;&lt;br /&gt;Piyush&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-6153076212207184884?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/6153076212207184884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=6153076212207184884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/6153076212207184884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/6153076212207184884'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2011/07/application-virtualization.html' title='Application Virtualization'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-2468926589214384073</id><published>2011-07-24T05:13:00.000-07:00</published><updated>2011-07-24T05:13:46.983-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='.exe'/><category scheme='http://www.blogger.com/atom/ns#' term='WISE'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Installer'/><category scheme='http://www.blogger.com/atom/ns#' term='Icon'/><category scheme='http://www.blogger.com/atom/ns#' term='display'/><category scheme='http://www.blogger.com/atom/ns#' term='.ico'/><category scheme='http://www.blogger.com/atom/ns#' term='Binary'/><title type='text'>How to correctly display icons</title><content type='html'>The primary key of the ICON table should have the extension as .exe or .ico, else the icon will not display properly.&lt;br /&gt;For example if the extension is abc.js then the same javascript icon will be shown in this case. If it is .txt then notepad icon will be displayed. Whatever be there in the [Binary], that does not matter if there is any other extension apart from .exe or .ico&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-2468926589214384073?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/2468926589214384073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=2468926589214384073' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/2468926589214384073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/2468926589214384073'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2011/07/how-to-correctly-display-icons.html' title='How to correctly display icons'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-8675815058005345039</id><published>2011-07-17T18:41:00.000-07:00</published><updated>2011-07-24T05:18:46.882-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Properties'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Installer 5.0'/><category scheme='http://www.blogger.com/atom/ns#' term='5.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Installer'/><category scheme='http://www.blogger.com/atom/ns#' term='new in windows installer'/><title type='text'>What's New in Windows Installer 5.0</title><content type='html'>And want to keep a post for the latest version as well:&lt;br /&gt;&lt;br /&gt;Well detailed in MSDN and here is the link:&lt;br /&gt;&lt;br /&gt;http://msdn.microsoft.com/en-us/library/dd408114(v=vs.85).aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-8675815058005345039?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/8675815058005345039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=8675815058005345039' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/8675815058005345039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/8675815058005345039'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2011/07/whats-new-in-windows-installer-50.html' title='What&apos;s New in Windows Installer 5.0'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-1714602999663626241</id><published>2011-07-17T18:39:00.000-07:00</published><updated>2011-07-24T05:24:40.008-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSIRMSHUTDOWN'/><category scheme='http://www.blogger.com/atom/ns#' term='MsiSystemRebootPending'/><category scheme='http://www.blogger.com/atom/ns#' term='MSIDISABLERMRESTART'/><category scheme='http://www.blogger.com/atom/ns#' term='MsiRunningElevated'/><category scheme='http://www.blogger.com/atom/ns#' term='MsiLogging'/><category scheme='http://www.blogger.com/atom/ns#' term='MsiRestartManagerSessionKey'/><category scheme='http://www.blogger.com/atom/ns#' term='MSIRESTARTMANAGER'/><category scheme='http://www.blogger.com/atom/ns#' term='MSIARPSETTINGSIDENTIFIER'/><category scheme='http://www.blogger.com/atom/ns#' term='MsiLogFileLocation'/><title type='text'>New Properties in Windows Installer 4.0 and later</title><content type='html'>Found this very useful post in msiblogger.com and would like to keep a note for myself so posting it here. Thanks to msiblogger for this.&lt;br /&gt;&lt;br /&gt;Microsoft has released Windows Installer Service 4.0 with Windows Vista. This new version of msi engine introduces some new properties which are exclusively available to msi based installations targeted for Windows Vista &amp; later. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;MSIARPSETTINGSIDENTIFIER&lt;/b&gt; – The MSIARPSETTINGSIDENTIFIER property contains a semi-colon delimited list of the registry locations where the application stores a user’s settings and preferences. During an operating system upgrade, this information can be used by the setup to improve the experience of users migrating applications.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;MsiLogging&lt;/b&gt; – This property can be used to enable automatic logging within the msi package. This propety value can be set to MSI logging parameters within the property table. Some valid values of this property would be: iwe, iwearcmpvo. Setting this property is the same as running your msi package with the /l option to create a log file. Note:You cannot use the “+” and “*” values of the /L option in the property value.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;MsiLogFileLocation&lt;/b&gt; – This read/write property can be used to specify the name and location of the log file created by the MsiLogging Property. Not setting this property will automatically create a log file in the user’s temp location, the value of which will be set to this property. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;MsiSystemRebootPending&lt;/b&gt; – This property is set to 1 if the target system has a pending reboot. This property can be used by setup in a launch condition to determine if a reboot is pending on the system. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;MsiRunningElevated&lt;/b&gt; – This property is set to 1 if the msi package is being run with elevated privileges. This property is similar to using the Privileges property in msi 3.1 and earlier. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;MSIRESTARTMANAGERCONTROL&lt;/b&gt; - This property enables setup authors to specify whether the package will use the Restart Manager or FileInUse Dialog to handle locked files at installation time. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The default value of this property is ‘0’, which forces the setup to interact with Restart Manager in case a locked file is encountered by the msi package. &lt;br /&gt;Setting this property to ‘Disable’ will force the msi package to use FileInUse Dialog instead. &lt;br /&gt;This property can also be set to “DisableShutDown”, which will mitigate Restart Manager’s ability to restart the machine in case of a reboot being triggered by the windows installer package. Using this property however does not disable Restart Manager from identifying files locked by applications and displaying the Restart Manager dialog. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;MsiRestartManagerSessionKey&lt;/b&gt; - This value of this property is set to the Restart Manager session by the Microsoft installer. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;MSIDISABLERMRESTART&lt;/b&gt; – This property is used to determine how applications and services that have locked files that need to be updated, will be handled after the update. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Setting this property to ‘0’ will force all the services that were shut down during an update to be restarted and applications registered with the Restart Manager to be restarted after the update. &lt;br /&gt;Setting this property to ‘1’ will force all the processes (services &amp; applications) that were shutdown during an update to not be restarted. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;MSIRMSHUTDOWN&lt;/b&gt; – This property is used to determine how applications and services that are using files affected by an update should be handled during an update. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Setting this property to ‘0’ will cause all the processes using files affected by the update to be shut down.&lt;br /&gt;Setting this property to ‘1’ will force all the processes using files affected by the update to be shutdown even if they don’t respond to Restart Manager. &lt;br /&gt;Setting this property to ‘2’ will cause the processes using files affected by the update to be shutdown only if they are registered to be restarted by the Restart Manager. If any process is not registered for a restart, then it will not be shut down. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;MSIUSEREALADMINDETECTION&lt;/b&gt; – Setting this property to 1 will request the installer to use the actual user information when setting the AdminUser property.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-1714602999663626241?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/1714602999663626241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=1714602999663626241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/1714602999663626241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/1714602999663626241'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2011/07/new-properties-in-windows-installer-40.html' title='New Properties in Windows Installer 4.0 and later'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-7411240358823625381</id><published>2011-07-03T01:15:00.001-07:00</published><updated>2011-07-24T05:26:30.302-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='x64'/><category scheme='http://www.blogger.com/atom/ns#' term='x86'/><category scheme='http://www.blogger.com/atom/ns#' term='WISE'/><category scheme='http://www.blogger.com/atom/ns#' term='MUI'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Installer'/><category scheme='http://www.blogger.com/atom/ns#' term='Language Packs'/><category scheme='http://www.blogger.com/atom/ns#' term='Window 7'/><category scheme='http://www.blogger.com/atom/ns#' term='DISM'/><title type='text'>Windows 7 Language Pack Installation and Un-Installation on 32 bit and 64 bit Machines</title><content type='html'>Recently I had to package Window 7 MUI for around 13 languages, both for 32 bit and 64 bit machines. I could not get any complete documentation for Installing, Un-Installing and making it work with the Deployment tool.&lt;br /&gt;&lt;br /&gt;I thought to write this article so it reduces the work of people who still have to make Language packs as a package.&lt;br /&gt;&lt;br /&gt;Windows 7 Language Packs come in a DVD and generally have a cab file called, lp.cab for all the languages in their respective folders.&lt;br /&gt;&lt;br /&gt;Following are the main command lines to be used while installing and Un-installing the Language Packs:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Installation:&lt;br /&gt;&lt;br /&gt;dism /online /add-package /quiet /norestart /packagepath:lp.cab&lt;br /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;br /&gt;Un-Installation:&lt;br /&gt;&lt;br /&gt;dism /online /remove-package /quiet /norestart /packagepath:lp.cab&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The lp.cab file can be copied to a temp location by your MSI and then a setup.bat file would be required to run the above command line.&lt;br /&gt;&lt;br /&gt;I had copied lp.cab, setup.bat,setup.vbs, uninstall.bat and uninstall.vbs to “%windir%\temp\&lt;muiname&gt;” folder.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here are the uses of all these files and how they are related in MSI.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Lp.cab: This is the basic installer cab file of the language pack which you can get through the source or DVD&lt;br /&gt;Setup.bat: This is the batch file to install the language pack as per the above command line.&lt;br /&gt;Setup.vbs: This .vbs file locally calls the setup.bat file, as if you are deploying from Deployment tool/network location then the batch file throws an error as it cannot resolve the UNC paths.&lt;br /&gt;Uninstall.bat: This is the batch file to un-install the language pack using the above mentioned command line.&lt;br /&gt;Uninstall.vbs: This .vbs file locally calls the uninstall.bat file, as if you are deploying from Deployment tool/network location then the batch file throws an error as it cannot resolve the UNC paths. Also this when wrapped in MSI, you can un-install the package from Add/Remove Programs and the language pack can be un-installed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After creating and adding these files to a temporary location, you can add 2 custom Actions, one for install and other for un-install to run the vbs files from installed filed.&lt;br /&gt;&lt;br /&gt;The Installation Custom Action can be placed just before InstallFinalize with condition as NOT REMOVE, and the Un-Installation Custom Action can be placed just after InstallInitialize with condition as REMOVE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now since you have read this from Packaging perspective this goes well for both 32 bit and 64 bit machines. But if now you try to install this MSI from Deployment tool or any other deployment tool which uses system account to run, you will face an issue with the 64 bit machines.&lt;br /&gt;&lt;br /&gt;The reason for not working in 64-bit machines is that when the MSI is run in system account all the scripts/batch file are run through cmd.exe which is in c:\windows\syswow64 folder. This does not work for dism command line and I had to use a workaround for this issue.&lt;br /&gt;&lt;br /&gt;The work around is that you need to run the dism command from %windir%\Sysnative.&lt;br /&gt;&lt;br /&gt;This works fine and I have inserted the below line in the batch file for both install and un-install before running the dism installation command:&lt;br /&gt;&lt;br /&gt;cd %windir%\sysnative&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So the batch file looks like:&lt;br /&gt;&lt;br /&gt;Install:&lt;br /&gt;&lt;br /&gt;@echo off&lt;br /&gt;&lt;br /&gt;cd %windir%\sysnative&lt;br /&gt;&lt;br /&gt;dism /online /add-package /quiet /norestart /packagepath:%windir%\temp\Microsoft_Win7MUI_Arabicx64 \lp.cab&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Uninstall:&lt;br /&gt;&lt;br /&gt;@echo off&lt;br /&gt;&lt;br /&gt;cd %windir%\sysnative&lt;br /&gt;&lt;br /&gt;dism /online /remove-package /quiet /norestart /packagepath:%windir%\temp\Microsoft_Win7MUI_Arabicx64 \lp.cab&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I hope all this information will be helpful for you to create the language packs. It took me a week to figure these things out. Hope you will not face this difficulty.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-7411240358823625381?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/7411240358823625381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=7411240358823625381' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/7411240358823625381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/7411240358823625381'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2011/07/windows-7-language-pack-installation.html' title='Windows 7 Language Pack Installation and Un-Installation on 32 bit and 64 bit Machines'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-3468264970519486111</id><published>2011-07-03T01:12:00.000-07:00</published><updated>2011-07-24T05:27:13.707-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x64'/><category scheme='http://www.blogger.com/atom/ns#' term='Context Menu'/><category scheme='http://www.blogger.com/atom/ns#' term='gVIM'/><category scheme='http://www.blogger.com/atom/ns#' term='64 bit'/><title type='text'>Context Menu Creation for gVIM application in x64 machine</title><content type='html'>I was stuck in an application where I had to use the 32 bit source for both 32 and 64 bit machines. The application seemed to work fine, except the context menu option in x64 machines.&lt;br /&gt;&lt;br /&gt;I found a great post by David Vielmetter on his blog http://davidvielmetter.com/tricks/context-menu-issues-with-gvim-in-windows-7-x64/ and I was able to solve the issue. I think context menu many times create an issue in 64 bit machines and this is a good way to solve them (This is entirely my point of view). If someone has some better suggestions, they are most welcome to comment here. I too would like to learn more on how to create 64 bit context menu options.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-3468264970519486111?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/3468264970519486111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=3468264970519486111' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/3468264970519486111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/3468264970519486111'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2011/07/context-menu-creation-for-gvim.html' title='Context Menu Creation for gVIM application in x64 machine'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-438465735036634858</id><published>2011-06-22T04:51:00.000-07:00</published><updated>2011-07-24T05:30:22.150-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='x64'/><category scheme='http://www.blogger.com/atom/ns#' term='Installshield'/><category scheme='http://www.blogger.com/atom/ns#' term='WinMerge'/><category scheme='http://www.blogger.com/atom/ns#' term='ShellExtensionx64.dll'/><category scheme='http://www.blogger.com/atom/ns#' term='WISE'/><category scheme='http://www.blogger.com/atom/ns#' term='Context Menu'/><category scheme='http://www.blogger.com/atom/ns#' term='Condition'/><category scheme='http://www.blogger.com/atom/ns#' term='64 bit'/><category scheme='http://www.blogger.com/atom/ns#' term='VersionNT64'/><category scheme='http://www.blogger.com/atom/ns#' term='VersionNT32'/><title type='text'>Context Menu for WinMerge appliction in x64</title><content type='html'>WinMerge application has the same source for x86 and x64 machines.&lt;br /&gt;The application works fine when packaged in MSI for x86, but the same application will not work on x64 as the context menu option will not be visible. To get the context menu option, follow these steps:&lt;br /&gt;1) Install the source on 64 bit machine and from INSTALLDIR, copy the ShellExtensionx64.dll file. &lt;br /&gt;2) Register this Dll file and keep its registry information in a reg file.&lt;br /&gt;3) The 32 bit version of this ShellExtension is ShellExtensionU.dll, hence make the component of this .dll conditionalized to be installed only on 32 bit machines. For this you can write the Condition as: (VersionNT32)&lt;br /&gt;4) Create a 64 bit component and import ShellExtensionx64.dll and its registry in it. The condition to make this component install only in 64 bit machines is: (VersionNT64)&lt;br /&gt;5) Also keep in mind to launch the application before taking a second snapshot of the application. This will include some HKCU registry keys which go in HKCU\Software\Thingamahoochie\WinMerge&lt;br /&gt;This is important as a registry is created in this hive, ContextMenuEnabled=1, which enables the context menu in the application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-438465735036634858?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/438465735036634858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=438465735036634858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/438465735036634858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/438465735036634858'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2011/06/context-menu-for-winmerge-appliction-in.html' title='Context Menu for WinMerge appliction in x64'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-6391511056952700165</id><published>2009-11-04T01:48:00.001-08:00</published><updated>2011-07-24T05:30:48.432-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RunOnce key'/><title type='text'>RunOnce Key</title><content type='html'>I Recently got to know from one of my team mates that the RunOnce key only runs once for the administrator and it does not run for the users.&lt;br /&gt;Just wanted to share this piece of information will all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-6391511056952700165?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/6391511056952700165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=6391511056952700165' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/6391511056952700165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/6391511056952700165'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2009/11/runonce-key.html' title='RunOnce Key'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-2701732703237842446</id><published>2008-11-24T18:23:00.000-08:00</published><updated>2012-01-19T18:57:44.283-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='Lock Permission'/><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Installer'/><category scheme='http://www.blogger.com/atom/ns#' term='Secedit'/><category scheme='http://www.blogger.com/atom/ns#' term='Condition'/><category scheme='http://www.blogger.com/atom/ns#' term='CACLS'/><category scheme='http://www.blogger.com/atom/ns#' term='Permission'/><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Action'/><category scheme='http://www.blogger.com/atom/ns#' term='Properties'/><category scheme='http://www.blogger.com/atom/ns#' term='WISE'/><category scheme='http://www.blogger.com/atom/ns#' term='file'/><category scheme='http://www.blogger.com/atom/ns#' term='folder'/><category scheme='http://www.blogger.com/atom/ns#' term='ACLs'/><category scheme='http://www.blogger.com/atom/ns#' term='XCACLS'/><category scheme='http://www.blogger.com/atom/ns#' term='table'/><title type='text'>Different Ways of Giving Permissions in Your Windows Installer</title><content type='html'>Windows XP/Windows 7&amp;nbsp;works under a locked down environment in most organisations. The MSI authors generally have to provide permissions to the installation directory, so that the users without admin rights are able to access and write data into the installation directory.&lt;br /&gt;When you set permissions, you are specifying what level of access the user has to the folder and its files and what users can do within that folder such as save, delete, or read files.&lt;br /&gt;If you would like to know how to set permissions through Powershell Script, then I would recommend you to read my new blog entry here:&lt;br /&gt;&lt;a href="http://msiworld.blogspot.com/2012/01/my-first-powershell-script.html"&gt;http://msiworld.blogspot.com/2012/01/my-first-powershell-script.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are six standard permission types which apply to files and folders in Windows XP/Windows 7:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Full Control &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Modify &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Read &amp;amp; Execute &lt;/li&gt;&lt;br /&gt;&lt;li&gt;List Folder Contents &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Read &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Write&lt;/li&gt;&lt;br /&gt;Each level represents a different set of actions users can perform. See the table below for more information.&lt;br /&gt;&lt;br /&gt;For folders you can also set your own unique permissions or create a variation of any of the standard permission levels. Within each of the permission levels are many possible variations.&lt;br /&gt;&lt;br /&gt;The following table represents the available standard permission types with their descriptions:&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Full Control - Permits the user(s) to:&lt;/h2&gt;&lt;br /&gt;&lt;li&gt;view file name and subfolders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;navigate to subfolders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;view data in the folder's files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;add files and subfolders to the folder&lt;/li&gt;&lt;br /&gt;&lt;li&gt;change the folder's files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;delete the folder and its files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;change permissions&lt;/li&gt;&lt;br /&gt;&lt;li&gt;take ownership of the folder and its files&lt;/li&gt;&lt;br /&gt;&lt;h2&gt;Modify - Permits the user(s) to:&lt;/h2&gt;&lt;li&gt;view the file names and subfolders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;navigate to subfolders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;view data in the folder's files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;add files and subfolders to the folder&lt;/li&gt;&lt;br /&gt;&lt;li&gt;change the folder's files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;delete the folder and its files&lt;/li&gt;&lt;br /&gt;&lt;h2&gt;Read &amp;amp; Execute - Permits the user(s) to:&lt;/h2&gt;&lt;li&gt;view file names and subfolder names&lt;/li&gt;&lt;br /&gt;&lt;li&gt;navigate to subfolders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;view data in the folder's files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;add files and subfolders to the folder&lt;/li&gt;&lt;br /&gt;&lt;h2&gt;List Folder Contents - Permits the user(s) to:&lt;/h2&gt;&lt;li&gt;view folders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;navigate to subfolders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;view folders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;does not permit access to the folder's files&lt;/li&gt;&lt;br /&gt;&lt;h2&gt;Read - Permits the user(s) to:&lt;/h2&gt;&lt;li&gt;view the file names and subfolder names&lt;/li&gt;&lt;br /&gt;&lt;li&gt;navigate to subfolders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;run applications&lt;/li&gt;&lt;br /&gt;&lt;li&gt;open files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;copy and view data in the folder's files&lt;/li&gt;&lt;br /&gt;&lt;h2&gt;Write - The Read permissions, plus permits the user(s) to:&lt;/h2&gt;&lt;li&gt;create folders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;add new files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;open and change files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;delete files&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;You can set permission to folders in following ways:&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Secedit&lt;/li&gt;&lt;br /&gt;&lt;li&gt;XCACLS/ICACLS&lt;/li&gt;&lt;br /&gt;&lt;li&gt;LockPermission table.&lt;/li&gt;&lt;br /&gt;&lt;h2&gt;Full Control - Permits the user(s) to:&lt;/h2&gt;&lt;li&gt;view file name and subfolders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;navigate to subfolders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;view data in the folder's files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;add files and subfolders to the folder&lt;/li&gt;&lt;br /&gt;&lt;li&gt;change the folder's files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;delete the folder and its files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;change permissions&lt;/li&gt;&lt;br /&gt;&lt;li&gt;take ownership of the folder and its files&lt;/li&gt;&lt;br /&gt;&lt;h2&gt;Modify - Permits the user(s) to:&lt;/h2&gt;&lt;li&gt;view the file names and subfolders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;navigate to subfolders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;view data in the folder's files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;add files and subfolders to the folder&lt;/li&gt;&lt;br /&gt;&lt;li&gt;change the folder's files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;delete the folder and its files&lt;/li&gt;&lt;br /&gt;&lt;h2&gt;Read &amp;amp; Execute - Permits the user(s) to:&lt;/h2&gt;&lt;li&gt;view file names and subfolder names&lt;/li&gt;&lt;br /&gt;&lt;li&gt;navigate to subfolders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;view data in the folder's files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;add files and subfolders to the folder&lt;/li&gt;&lt;br /&gt;&lt;h2&gt;List Folder Contents - Permits the user(s) to:&lt;/h2&gt;&lt;li&gt;view folders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;navigate to subfolders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;view folders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;does not permit access to the folder's files&lt;/li&gt;&lt;br /&gt;&lt;h2&gt;Read - Permits the user(s) to:&lt;/h2&gt;&lt;li&gt;view the file names and subfolder names&lt;/li&gt;&lt;br /&gt;&lt;li&gt;navigate to subfolders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;run applications&lt;/li&gt;&lt;br /&gt;&lt;li&gt;open files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;copy and view data in the folder's files&lt;/li&gt;&lt;br /&gt;&lt;h2&gt;Write - The Read permissions, plus permits the user(s) to:&lt;/h2&gt;&lt;li&gt;create folders&lt;/li&gt;&lt;br /&gt;&lt;li&gt;add new files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;open and change files&lt;/li&gt;&lt;br /&gt;&lt;li&gt;delete files&lt;/li&gt;&lt;br /&gt;You can set permission to folders in following ways:&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Secedit&lt;/li&gt;&lt;br /&gt;&lt;li&gt;XCACLS/ICACLS&lt;/li&gt;&lt;br /&gt;&lt;li&gt;LockPermission table.&lt;/li&gt;&lt;br /&gt;&lt;h2&gt;SECEDIT:&lt;/h2&gt;SECEDIT command-line tool can be used to impose group policy object settings upon a target workstation immediately.&lt;br /&gt;To use Secedit to give permission in your package, perform the following steps:&lt;br /&gt;Go to Run and type MMC.&lt;br /&gt;A Console will open up as shown in the below picture.&lt;br /&gt;Go to File -&amp;gt; and click on Add / Remove Snap in.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_goeskL683dw/SSttS8yztkI/AAAAAAAAEj8/YFd40p3oS08/s1600-h/Perm05.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5272427961091601986" src="http://4.bp.blogspot.com/_goeskL683dw/SSttS8yztkI/AAAAAAAAEj8/YFd40p3oS08/s320/Perm05.JPG" style="cursor: pointer; display: block; height: 236px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Add / Remove Snap in window opens up as shown in the below picture.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_goeskL683dw/SSttSskF2YI/AAAAAAAAEj0/1n-b4bLU0pQ/s1600-h/Perm04.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5272427956734908802" src="http://1.bp.blogspot.com/_goeskL683dw/SSttSskF2YI/AAAAAAAAEj0/1n-b4bLU0pQ/s320/Perm04.JPG" style="cursor: pointer; display: block; height: 234px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After this Click on Add...&lt;br /&gt;Add standalone Snap in console opens up as shown in the below picture.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_goeskL683dw/SSttSh--M_I/AAAAAAAAEjs/EhZgmcLizDA/s1600-h/Perm03.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5272427953894863858" src="http://2.bp.blogspot.com/_goeskL683dw/SSttSh--M_I/AAAAAAAAEjs/EhZgmcLizDA/s320/Perm03.JPG" style="cursor: pointer; display: block; height: 243px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Choose Security Template from the list of Snap in, and click on Add.&lt;br /&gt;The Security template will be added to the console.&lt;br /&gt;You can see the File System, with all the listed directories on the right. This is shown in below picture.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_goeskL683dw/SSttSq2oFuI/AAAAAAAAEjk/DujpBF0u9jE/s1600-h/Perm02.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5272427956275779298" src="http://4.bp.blogspot.com/_goeskL683dw/SSttSq2oFuI/AAAAAAAAEjk/DujpBF0u9jE/s320/Perm02.JPG" style="cursor: pointer; display: block; height: 242px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now, delete all files on right.&lt;br /&gt;Right click and click on Add File, browse and select the required directory to give permission to.&lt;br /&gt;Similarly you can give permission to registry too.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_goeskL683dw/SSttSd80P0I/AAAAAAAAEjc/D9fRgzADs9k/s1600-h/Perm01.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5272427952812080962" src="http://3.bp.blogspot.com/_goeskL683dw/SSttSd80P0I/AAAAAAAAEjc/D9fRgzADs9k/s320/Perm01.JPG" style="cursor: pointer; display: block; height: 242px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now, delete all files on right.&lt;br /&gt;Right click and click on Add File, browse and select the required directory to give permission to.&lt;br /&gt;Similarly you can give permission to registry too.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_goeskL683dw/SStuFWzWXlI/AAAAAAAAEkM/xOsPm-odtMY/s1600-h/Perm07.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5272428827066654290" src="http://1.bp.blogspot.com/_goeskL683dw/SStuFWzWXlI/AAAAAAAAEkM/xOsPm-odtMY/s320/Perm07.JPG" style="cursor: pointer; display: block; height: 268px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click on OK and save this template as .inf (such as {PackageName}.inf) file.&lt;br /&gt;Now we have to include this file in the package.&lt;br /&gt;Add this file to %Windir%\security\templates folder.&lt;br /&gt;Use the following Custom Action in your package to implement Secedit.&lt;br /&gt;&lt;br /&gt;Use Execute Program from Destination Custom Action.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Give Custom Action name as per your standards&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Working Directory to be set is Templates folder (where we have placed the .inf file.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;In exe and Command line give the following command: &lt;br /&gt;&lt;pre&gt;secedit /configure /db "[security]Database\{PackageName}.sdb" /cfg "[security]templates\{PackageName}.inf" /log "[security]logs\{PackageName}.log" /quiet&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Here [security] refers to the security folder is C:\Windows or %Windir%\Security. It is always good to use directory instead of hardcoded paths.&lt;br /&gt;&lt;br /&gt;{PackageName} refers to the name you would like to give to your .inf file, to your log file you create and to the .sdb file you create.&lt;br /&gt;&lt;br /&gt;Note that this will create .sdb file in %windir%\security\Database folder and .log file in %windir%\security\logs folder. So while un-installation of package you need to remember to delete these files from the folder. You can do that by using remove file table. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;The location of the Custom action should be just before install finalize.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The Condition for launch of Custom Action should be "NOT REMOVE"&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The Custom action can be run in deferred mode in system context.&lt;/li&gt;&lt;br /&gt;&lt;h2&gt;XCACLS/ICACLS:&lt;/h2&gt;XCACLS or Extended Change Access Control List tool, is an advanced version of CACLS, the difference being that we do not have to answer Yes/No prompts in XCACLS. CACLS and XCACLS are tools which are used to modify the ACLs (Access Control Lists), by which in turn we are modifying the folder permissions for users in windows. ICACLS is another tool like XCACLS.&lt;br /&gt;&lt;br /&gt;CACLS is installed in all users machine in System32 folder.&lt;br /&gt;&lt;br /&gt;XCACLS ships with the Windows NT Resource Kit or can be easily downloaded from net. XCACLS allows you to set permissions to the same granular level of control that you have with the GUI.&lt;br /&gt;&lt;br /&gt;CACLS Syntax&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;CACLS filename [/T] [/E] [/C] [/G user:perm] [/R user [...]] [/P user:perm [...]] [/D user [...]]&lt;/pre&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;filename&lt;/td&gt; &lt;td&gt;Displays ACLs.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;/T&lt;/td&gt; &lt;td&gt;Changes ACLs of specified files in the current directory and all subdirectories.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;/E&lt;/td&gt; &lt;td&gt;Edit ACL instead of replacing it.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;/C&lt;/td&gt; &lt;td&gt;Continue on access denied errors.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;/G user:perm&lt;/td&gt; &lt;td&gt;Grant specified user access rights. &lt;br /&gt;Perm can be:&lt;br /&gt;R Read&lt;br /&gt;C Change (write)&lt;br /&gt;F Full control&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;/R user&lt;/td&gt; &lt;td&gt;Revoke specified user's access rights (only valid with /E).&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;/P user:perm&lt;/td&gt; &lt;td&gt;Replace specified user's access rights. &lt;br /&gt;Perm can be:&lt;br /&gt;N None &lt;br /&gt;R Read&lt;br /&gt;C Change (write)&lt;br /&gt;F Full control&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;/D user &lt;/td&gt; &lt;td&gt;Deny specified user access.&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Wildcards can be used to specify more that one file in a command.&lt;br /&gt;You can specify more than one user in a command.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;XCACLS Syntax&lt;/h2&gt;&lt;pre&gt;XCACLS filename [/T] [/E] [/C] [/G user:perm;spec] [/R user [...]][/P user:perm;spec [...]] [/D user [...]] [/Y]&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;filename&lt;/td&gt; &lt;td&gt;Displays ACLs.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;/T&lt;/td&gt; &lt;td&gt;Changes ACLs of specified files in the current directory and all subdirectories.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;/E&lt;/td&gt; &lt;td&gt;Edit ACL instead of replacing it.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;/C&lt;/td&gt; &lt;td&gt;Continue on access denied errors.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;/G user:perm;spec &lt;/td&gt; &lt;td&gt;Grant specified user access rights.&lt;br /&gt;Perm can be:&lt;br /&gt;R Read&lt;br /&gt;C Change (write)&lt;br /&gt;F Full control&lt;br /&gt;P Change Permissions (Special access)&lt;br /&gt;O Take Ownership (Special access)&lt;br /&gt;X EXecute (Special access)&lt;br /&gt;E REad (Special access)&lt;br /&gt;W Write (Special access)&lt;br /&gt;D Delete (Special access)&lt;br /&gt;Spec can be the same as perm and will only be applied to a directory. In this case, Perm will be used for file inheritence in this directory. If not omitted: Spec=Perm. Special values for Spec only:&lt;br /&gt;T NoT Specified (for file inherit, only for dirs valid)&lt;br /&gt;At least one access right has to follow!&lt;br /&gt;Entries between ';' and T will be ignored!&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;/R user&lt;/td&gt; &lt;td&gt;Revoke specified user's access rights.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;/P user:perm;spec&lt;/td&gt; &lt;td&gt;Replace specified user's access rights.&lt;br /&gt;for access right specification see /G option&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;/D user&lt;/td&gt; &lt;td&gt;Deny specified user access.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;/Y&lt;/td&gt; &lt;td&gt;Replace user's rights without verify&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Wildcards can be used to specify more that one file in a command.&lt;br /&gt;You can specify more than one user in a command.&lt;br /&gt;You can combine access rights.&lt;br /&gt;&lt;br /&gt;Example of XCACLS can be:&lt;br /&gt;&lt;pre&gt;xcacls "[INSTALLDIR]FOLDER" /e /g users:ewxd;ewx&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h2&gt;LockPermission table:&lt;/h2&gt;LockPermission table can be also used to give permission to files, folders and registries.&lt;br /&gt;With the help of Lockpermission table you can give permission to only those users who already exist on the computer or domain.&lt;br /&gt;For giving permission through LockPermission table follow the below procedure:&lt;br /&gt;On the File section in Installation expert (You can do the same with Registry too) , Either go to file or the directory (depending on to which you want to give permission) and click on Details. There will be a permission tab there. For giving permission to file you will get the below screen where there will be a permissions tab among other tabs as shown in the picture. If you have chosen directory then there will only be a permissions tab. Click on Add. In the domain, you can mention the domain of the user for which permissions are to be set. You can either give a standalone machine or a domain name. I have used an environment variable here [%USERDOMAIN] which will pick the domain at run time for the user for which the package is being installed. The user which you can set can be Administrator, Everyone or Logged on User. I have selected every one here.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_goeskL683dw/SStuFcXXziI/AAAAAAAAEkE/LlICHsYkO3Q/s1600-h/Perm06.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5272428828559920674" src="http://2.bp.blogspot.com/_goeskL683dw/SStuFcXXziI/AAAAAAAAEkE/LlICHsYkO3Q/s320/Perm06.JPG" style="cursor: pointer; display: block; height: 235px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After that you can select the permissions from below what all permissions you want to give to the user. Click ok and the permissions work is over.&lt;br /&gt;&lt;br /&gt;Now when you go to the LockPermissions table in Tables section, you can see the following columns there:&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Lock Object, Table, Domain, User and permission.&lt;/h2&gt;&lt;i&gt;Lock Object&lt;/i&gt; and &lt;i&gt;Table&lt;/i&gt; column together specify the file, directory or registry key to be given permission to. Lock Object contains the name of the file, directory or the registry name. Table column can be filled with File, Create Folder or Registry. Lock Object is the foreign key to the primary key of Table mentioned by Table column.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Domain&lt;/i&gt; as I have mentioned earlier is the domain of the user.&lt;br /&gt;&lt;i&gt;User&lt;/i&gt; too as I have mentioned earlier is the User to whom we want to give the permission.&lt;br /&gt;&lt;i&gt;Permission&lt;/i&gt; is the Generic number to the permissions we have specified.&lt;br /&gt;&lt;br /&gt;Every file, registry key, or directory that is listed in the LockPermissions Table receives an explicit security descriptor, whether it replaces an existing object or not. The Windows Installer attempts to preserve the security on objects that already exist on the system. If an object is not listed in the LockPermissions Table, and replaces an existing object, the replacement gets the security settings of the object that it replaces.&lt;br /&gt;&lt;br /&gt;If an object is not listed in the LockPermissions Table, and does not replace an existing object, it receives no explicit security descriptor. The access to the new object is based on the attributes of its parent or container object. If an object is not listed in the table, and replaces an object with no explicit security descriptor, the access to the new object is based on the attributes of its parent or container object.&lt;br /&gt;&lt;br /&gt;Hope this article helps you to builds up your knowledge on how to give permissions to your files, folders and registries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-2701732703237842446?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/2701732703237842446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=2701732703237842446' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/2701732703237842446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/2701732703237842446'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2008/11/different-ways-of-giving-permissions-in.html' title='Different Ways of Giving Permissions in Your Windows Installer'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_goeskL683dw/SSttS8yztkI/AAAAAAAAEj8/YFd40p3oS08/s72-c/Perm05.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-5440080864396463522</id><published>2008-11-18T08:10:00.000-08:00</published><updated>2008-11-18T08:13:01.865-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='Properties'/><category scheme='http://www.blogger.com/atom/ns#' term='Manufacturer'/><category scheme='http://www.blogger.com/atom/ns#' term='WISE'/><category scheme='http://www.blogger.com/atom/ns#' term='Product version'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Installer'/><category scheme='http://www.blogger.com/atom/ns#' term='Product name'/><category scheme='http://www.blogger.com/atom/ns#' term='Product code'/><category scheme='http://www.blogger.com/atom/ns#' term='Product Language'/><title type='text'>Required Properties in MSI</title><content type='html'>There are five properties which are required by every Microsoft installer to identify itself from other MSI.&lt;br /&gt;&lt;br /&gt;These properties are required to be present in every MSI.&lt;br /&gt;&lt;br /&gt;These are the five properties:&lt;br /&gt;&lt;br /&gt;1) Product Name: It is the name of the application you mention in your MSI.&lt;br /&gt;2) Product version: This is the version of the product which you give.. like 1.0.0 etc..&lt;br /&gt;3) Product code: It is the unique GUID for your MSI.&lt;br /&gt;4) Product language: This is the numeric value of product and should be one of those entries mentioned in Template summary property in Summary information stream.&lt;br /&gt;5) Manufacturer: This is the name of the manufacturer of the product.&lt;br /&gt;For future upgrades, it is recommended to add Upgrade code property in the package.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-5440080864396463522?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/5440080864396463522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=5440080864396463522' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/5440080864396463522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/5440080864396463522'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2008/11/required-properties-in-msi.html' title='Required Properties in MSI'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-2774550492802794422</id><published>2008-10-30T04:03:00.000-07:00</published><updated>2008-10-30T04:07:45.585-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='repair'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='file'/><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Installer'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><category scheme='http://www.blogger.com/atom/ns#' term='key path'/><category scheme='http://www.blogger.com/atom/ns#' term='Self Heal'/><category scheme='http://www.blogger.com/atom/ns#' term='Advertising info'/><title type='text'>Difference Between Self Heal and Repair</title><content type='html'>Self Heal and Repair are two different concepts in Windows Installer which people many times consider to be the same thing, however there is difference in these two.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Self Heal&lt;/span&gt; is triggered by advertised shortcuts, or other advertising information in the package which eventually &lt;span style="font-style:italic;"&gt;Repairs&lt;/span&gt; the application.&lt;br /&gt;&lt;br /&gt;When the application is launched by advertised shortcut, it checks for all the key paths of the &lt;span style="font-weight:bold;"&gt;Current Feature&lt;/span&gt;, if any of the key paths is missing it will launch Repair.&lt;br /&gt;&lt;br /&gt;Note that if there are multiple features then it will not check the missing key paths of the other features, but only the feature of which the advertised shortcut is launched.&lt;br /&gt;&lt;br /&gt;Repair of an MSI can be triggered by&lt;br /&gt;&lt;br /&gt;Repair button in Add/Remove programs&lt;br /&gt;Giving the command line msiexec /f{other option} {MSI name}&lt;br /&gt;Self Heal by advertised shortcut or other advertising information.&lt;br /&gt;Active setup&lt;br /&gt;Once the repair of the package is triggered, even with Self Heal, then the whole of the MSI is reinstalled. Then it does not see that only the feature which triggered the self heal should be repaired, but the whole MSI, by which I mean, all its features are reinstalled.&lt;br /&gt;&lt;br /&gt;Hope this clarifies the difference between two.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-2774550492802794422?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/2774550492802794422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=2774550492802794422' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/2774550492802794422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/2774550492802794422'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2008/10/difference-between-self-heal-and-repair.html' title='Difference Between Self Heal and Repair'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-2290567637065030783</id><published>2008-10-21T23:02:00.000-07:00</published><updated>2008-10-30T04:11:05.171-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='FAQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Installer'/><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><category scheme='http://www.blogger.com/atom/ns#' term='set property'/><category scheme='http://www.blogger.com/atom/ns#' term='troubleshoot'/><category scheme='http://www.blogger.com/atom/ns#' term='Internal Consistency Evaluators'/><category scheme='http://www.blogger.com/atom/ns#' term='repair'/><category scheme='http://www.blogger.com/atom/ns#' term='Properties'/><category scheme='http://www.blogger.com/atom/ns#' term='WISE'/><category scheme='http://www.blogger.com/atom/ns#' term='ICE Errors'/><category scheme='http://www.blogger.com/atom/ns#' term='key path'/><title type='text'>How REINSTALLMODE=amus Works</title><content type='html'>In any of these installation transactions, viz. initial installation, repair, reinstallation, on-demand installation or patching an MSI, The REINSTALLMODE has an affect on it.&lt;br /&gt;&lt;br /&gt;Here is what "amus" means:&lt;br /&gt;&lt;br /&gt;    * a - Force all files to be reinstalled, regardless of version&lt;br /&gt;    * m - Rewrite all registry keys that go to HKEY_LOCAL_MACHINE or HKEY_CLASSES_ROOT&lt;br /&gt;    * u - Rewrite all registry keys that go to HKEY_CURRENT_USER or HKEY_USERS&lt;br /&gt;    * s - Reinstall shortcuts and icons&lt;br /&gt;&lt;br /&gt;The mentioning of "a" in amus forces the reinstallation of files on your machine irrespective of the file version rules. Every file updated by REINSTALL property will be updated in this case.&lt;br /&gt;&lt;br /&gt;The sequence of events which happen actually depend on the authoring of your patch.&lt;br /&gt;&lt;br /&gt;If your patch contains the full file, the installer will not access the source to reinstall that file, but if your file is the delta of the file, like an update to say ini file, then the patch will access first the machine file and update it, and if machine file is not accessible to the patch, then in that case, the installer will go and grab the file from the original source location and will work from there.&lt;br /&gt;&lt;br /&gt;REINSTALLMODE=amus is not the recommended solution, but sometimes situations become inevitable and we need to use them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-2290567637065030783?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/2290567637065030783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=2290567637065030783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/2290567637065030783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/2290567637065030783'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2008/10/how-reinstallmodeamus-works.html' title='How REINSTALLMODE=amus Works'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-1484940424931006224</id><published>2008-10-13T19:51:00.000-07:00</published><updated>2008-10-13T19:54:03.480-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='property passing'/><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='Properties'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Action'/><category scheme='http://www.blogger.com/atom/ns#' term='WISE'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Installer'/><title type='text'>Using SOURCEDIR Property in Package</title><content type='html'>SOURCEDIR property in MSI package refers to the location from where the MSI is installed in the machine. How do we use this property in our package.&lt;br /&gt;&lt;br /&gt;If you want to use a file which is kept in the source folder (next to where your MSI is placed), through Custom Action then you need to follow this procedure.&lt;br /&gt;&lt;br /&gt;The SOURCEDIR cannot be directly used in the package. If you read the logs then SOURCEDIR property is created and correctly pointed to the directory. But later the log shows that: Deleting SOURCEDIR... So the value of this property is deleted and the MSI does not get access to it. If you display message with [SOURCEDIR] property then it will be empty.&lt;br /&gt;&lt;br /&gt;The work around for this is that we can put an Action in the sequence called: "ResolveSource" after CostFinalize action. Then if you place your Custom Action after this action which refers to SOURCEDIR property then you will get the correct value of SOURCEDIR.&lt;br /&gt;&lt;br /&gt;Acknowledgement: I would like to thank my friend, Anurag, here who helped me to figure this out.... :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-1484940424931006224?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/1484940424931006224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=1484940424931006224' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/1484940424931006224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/1484940424931006224'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2008/10/using-sourcedir-property-in-package.html' title='Using SOURCEDIR Property in Package'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-7154122119563275246</id><published>2008-10-13T19:47:00.000-07:00</published><updated>2008-10-13T19:51:06.941-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='isolation'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Action'/><category scheme='http://www.blogger.com/atom/ns#' term='WISE'/><category scheme='http://www.blogger.com/atom/ns#' term='file'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Installer'/><category scheme='http://www.blogger.com/atom/ns#' term='Condition'/><title type='text'>Isolation of a File: Two Ways in One MSI</title><content type='html'>Generally you would have read that after isolation is done, we should not modify the MSI. So how to do .local and .manifest in the same MSI. Actually you would be thinking: "What is the need to do both types in the same MSI?" This is because, recently, I came across a situation in which we needed to do isolation of a file for installation of application in Windows 2000 through .local method and for installation in Windows XP and Vista through .manifest method. This was needed to be done through same MSI.&lt;br /&gt;&lt;br /&gt;This is the solution. Create a .msi file with .local isolation method for windows 2000. Then create another .msi file with .manifest isolation. Note the visual difference of .manifest isolation file and the base MSI. Make all the differences seen in this to the .msi which was created with .local isolation. Then compile it. This will not get corrupted. Only the ones with .manifest isolation if recompiled again get corrupted. So take care of this and you can then conditionalize the components to be installed for 2000, XP or Vista...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-7154122119563275246?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/7154122119563275246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=7154122119563275246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/7154122119563275246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/7154122119563275246'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2008/10/isolation-of-file-two-ways-in-one-msi.html' title='Isolation of a File: Two Ways in One MSI'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-5277477934330668345</id><published>2008-10-10T19:04:00.000-07:00</published><updated>2008-10-10T19:06:46.827-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='WISE'/><category scheme='http://www.blogger.com/atom/ns#' term='large'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Installer'/><category scheme='http://www.blogger.com/atom/ns#' term='cab'/><category scheme='http://www.blogger.com/atom/ns#' term='size'/><title type='text'>How to Create Packages with a Size Greater Than 2 GB</title><content type='html'>Packages which need to include or which capture files with a total size exceeding 2 GB, it's necessary to use some tricks. Usually the MSI with cabs compressed outside the MSI allows the maximum size of cab files to be 2 GB. If the cab size file tries to exceed 2 GB, then the WISE package compilation throws an error.&lt;br /&gt;&lt;br /&gt;For this you need to create separate features. In these separate features, distribute the files in the package so that the feature has a total file size of less than 2 GB.&lt;br /&gt;&lt;br /&gt;After this you need to go to Media option in Installation expert and choose option one cab file per feature.&lt;br /&gt;&lt;br /&gt;This will give you the MSI along with cab files which have size less than 2 GB.&lt;br /&gt;&lt;br /&gt;Since the total package size will be very big, the downloading of cab files while deploying and then uncompressing them, will take lots of time. So the other solution is to choose the option of Uncompressed Files outside MSI in the media option. This will save time during installation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-5277477934330668345?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/5277477934330668345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=5277477934330668345' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/5277477934330668345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/5277477934330668345'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2008/10/how-to-create-packages-with-size.html' title='How to Create Packages with a Size Greater Than 2 GB'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-2762836083263615927</id><published>2008-09-17T08:45:00.000-07:00</published><updated>2008-09-17T08:46:52.356-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Properties'/><title type='text'>Everything You Want to Know About Properties</title><content type='html'>Ever wondered how many properties are set or can be set during an installation?&lt;br /&gt;&lt;br /&gt;Here is a great page which you can refer to for all the properties you ever wish to hear about Windows installer.&lt;br /&gt;&lt;br /&gt;http://helpnet.acresso.com/robo/projects/helplibdevstudio9/IHelpPropReference.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-2762836083263615927?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/2762836083263615927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=2762836083263615927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/2762836083263615927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/2762836083263615927'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2008/09/everything-you-want-to-know-about.html' title='Everything You Want to Know About Properties'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-3691627429235146780</id><published>2008-09-17T08:37:00.000-07:00</published><updated>2008-09-17T08:48:47.706-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='msp'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Installer'/><category scheme='http://www.blogger.com/atom/ns#' term='silent'/><category scheme='http://www.blogger.com/atom/ns#' term='patch'/><title type='text'>Installation of MSP File in Silent Mode</title><content type='html'>The best way to install an MSP file in silent installation is with the following command line:&lt;br /&gt;&lt;br /&gt;msiexec /p patchfile.msp REINSTALL=ALL REINSTALLMODE=omus&lt;br /&gt;&lt;br /&gt;But if you do not give the command line options of REINSTALL and REINSTALLMODE then it will not patch the existing installation package. What it will do is update the locally cached copy of the MSI database.&lt;br /&gt;&lt;br /&gt;If you run the MSP in UI mode then it will patch the installation and will also update the locally cached copy of the installation, because when the dialogs are run they in turn set REINSTALL and REINSTALLMODE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-3691627429235146780?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/3691627429235146780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=3691627429235146780' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/3691627429235146780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/3691627429235146780'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2008/09/installation-of-msp-file-in-silent-mode.html' title='Installation of MSP File in Silent Mode'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-337763953278616228</id><published>2008-09-09T23:41:00.000-07:00</published><updated>2008-09-09T23:43:40.576-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='Properties'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Action'/><category scheme='http://www.blogger.com/atom/ns#' term='VB script'/><category scheme='http://www.blogger.com/atom/ns#' term='WISE'/><category scheme='http://www.blogger.com/atom/ns#' term='set property'/><title type='text'>Using VBScript to Set Properties in MSI</title><content type='html'>We can easily use Set Property Custom Action to set Windows Installer Property, but sometimes we wish to set the property directly in VbScript, specially if we are taking an input from a user through VBScript. Hope this tip helps.&lt;br /&gt;&lt;br /&gt;To set property through VBScript we can use "Session" object like:&lt;br /&gt;&lt;br /&gt;Session.Property("ALLUSERS")="1" &lt;br /&gt;&lt;br /&gt;or we can directly use Property keyword like:&lt;br /&gt;&lt;br /&gt;Property("REBOOT")="ReallySuppress"&lt;br /&gt;&lt;br /&gt;The only catch here is that we cannot set INSTALLDIR property through the above method as the package uses Directory table to store the value of INSTALLDIR. We need to write the below VBScript to set INSTALLDIR:&lt;br /&gt;&lt;br /&gt;dim instpath&lt;br /&gt;&lt;br /&gt;instpath = "C:\newpath\newfolder"&lt;br /&gt;&lt;br /&gt;Session.TargetPath("INSTALLDIR")=instpath&lt;br /&gt;&lt;br /&gt;Remember to place this Custom Action after CostFinalize if you are changing the value of INSTALLDIR property in UI Sequence.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-337763953278616228?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/337763953278616228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=337763953278616228' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/337763953278616228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/337763953278616228'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2008/09/using-vbscript-to-set-properties-in-msi.html' title='Using VBScript to Set Properties in MSI'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-1737625046913833274</id><published>2008-08-19T01:50:00.001-07:00</published><updated>2008-08-19T20:00:14.172-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Custom Action'/><category scheme='http://www.blogger.com/atom/ns#' term='copy'/><category scheme='http://www.blogger.com/atom/ns#' term='Condition'/><category scheme='http://www.blogger.com/atom/ns#' term='easy'/><title type='text'>Easy way of Copying Condition in Custom Action</title><content type='html'>&lt;div&gt;&lt;div&gt;I have learnt an easy way of copying condition directly in one Custom Action from other. This is totally on my experience, and I have not found any material for it on net too. So here it goes...&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Suppose you are making a CustomAction2 and have added it in the sequence as shown :&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_goeskL683dw/SKqJr-mNtsI/AAAAAAAAEWE/cqjNeH7sU0A/s1600-h/CA1.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5236148905402283714" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_goeskL683dw/SKqJr-mNtsI/AAAAAAAAEWE/cqjNeH7sU0A/s400/CA1.gif" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;And now you have to mention the condition same as that of CustomAction1, which in this case is "NOT Installed AND NOT PATCH", you have to click on CustomAction1 in the sequence and it will be like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_goeskL683dw/SKqJ88tkh2I/AAAAAAAAEWM/jEGtcSyutzg/s1600-h/CA2.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5236149196954044258" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_goeskL683dw/SKqJ88tkh2I/AAAAAAAAEWM/jEGtcSyutzg/s400/CA2.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;You can see the Condition in the greyed area. You cannot copy it directly, but what you have to do is: go to any of the other tab from this situation, be it Properties or Details tab.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_goeskL683dw/SKqLLJcARkI/AAAAAAAAEWU/XmHe5rqk9Sg/s1600-h/CA3.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5236150540399822402" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_goeskL683dw/SKqLLJcARkI/AAAAAAAAEWU/XmHe5rqk9Sg/s400/CA3.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;All you have to do next is to come back to your Location tab. And here you see the result.The Condition is automatically copied to the CustomAction2.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_goeskL683dw/SKqLWb23sBI/AAAAAAAAEWc/0JKDFOeb4bI/s1600-h/CA4.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5236150734322905106" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_goeskL683dw/SKqLWb23sBI/AAAAAAAAEWc/0JKDFOeb4bI/s400/CA4.gif" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Go ahead and try this out. It is really fun and easy. It will save you some time too.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-1737625046913833274?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/1737625046913833274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=1737625046913833274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/1737625046913833274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/1737625046913833274'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2008/08/easy-way-of-copying-condition-in-custom.html' title='Easy way of Copying Condition in Custom Action'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_goeskL683dw/SKqJr-mNtsI/AAAAAAAAEWE/cqjNeH7sU0A/s72-c/CA1.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-4478927051092677712</id><published>2008-08-19T00:21:00.000-07:00</published><updated>2008-08-19T20:01:39.201-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Application Packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='file'/><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><category scheme='http://www.blogger.com/atom/ns#' term='exclusion list'/><title type='text'>Exclusion List</title><content type='html'>Exclusion List&lt;br /&gt;&lt;br /&gt;• Manual Checks: Exclude (delete) any unwanted files and folders. Some common file extensions that should usually be excluded are listed below. If the resource you are deleting is a keypath (indicated by the key symbol) you must ensure the related component has been assigned a new keypath. If the component is now empty it can be deleted.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Common Items:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;HKEY_USER_SELECTABLE\Software\Shortcuts&lt;br /&gt;Event log registries.&lt;br /&gt;All VCache Entries&lt;br /&gt;Shutdown Entries&lt;br /&gt;Uninstall Entries&lt;br /&gt;Your Username if Captured&lt;br /&gt;*.log-app specific&lt;br /&gt;services / hosts – These must be handled appropriately&lt;br /&gt;Folders/ Files referring to Wise&lt;br /&gt;Folders/ Files referring to InstallShield&lt;br /&gt;Any cookies&lt;br /&gt;Any file from the dependency applications that has got captured must be excluded.&lt;br /&gt;Cache&lt;br /&gt;Temp&lt;br /&gt;Tmp&lt;br /&gt;Bag&lt;br /&gt;Log – Examine in notepad to see if they are relevant or not.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;• Files&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;*.REG files&lt;br /&gt;_isreg32.dll&lt;br /&gt;setup.exe&lt;br /&gt;install.log&lt;br /&gt;install.exe&lt;br /&gt;install.ini&lt;br /&gt;unwise.exe&lt;br /&gt;Uninstall.xml&lt;br /&gt;Upgrade.exe&lt;br /&gt;Update.exe&lt;br /&gt;uninstall.cif&lt;br /&gt;uninstall.cfg / uninstall.cgf&lt;br /&gt;uninstall.dat&lt;br /&gt;uninstall.dll&lt;br /&gt;uninstall.ini&lt;br /&gt;uninst.exe&lt;br /&gt;uninstall.exe&lt;br /&gt;deinstall.exe&lt;br /&gt;Remove.exe / remove*.exe / *remove.exe&lt;br /&gt;Regsvr16.exe&lt;br /&gt;Regsvr32.exe&lt;br /&gt;services.msc&lt;br /&gt;*.ora files&lt;br /&gt;*.oem files&lt;br /&gt;Hosts File&lt;br /&gt;C:\Temp&lt;br /&gt;Pagefile.sys&lt;br /&gt;C:\Winnt\Recent&lt;br /&gt;Ntuser.ini&lt;br /&gt;Ntuser.dat&lt;br /&gt;Ntuser.dat.log&lt;br /&gt;\Favourites\Desktop.ini&lt;br /&gt;\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat&lt;br /&gt;\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat.log&lt;br /&gt;\Application Data\Desktop.ini&lt;br /&gt;\Application Data\Microsoft\Internet Explorer\brndlog.txt&lt;br /&gt;\Application Data\Microsoft\Internet Explorer\brndlog.txt.log&lt;br /&gt;\Application Data\Microsoft\Internet Explorer\Quick Launch\desktop.ini&lt;br /&gt;\Cookies\index.dat&lt;br /&gt;\NetworkService\LocalSetting\Desktop.ini&lt;br /&gt;Boot.ini&lt;br /&gt;Hiberfil.sys&lt;br /&gt;Ntldr&lt;br /&gt;SchedLgU.txt&lt;br /&gt;C:\RECYCLER&lt;br /&gt;C:\System Volume Information&lt;br /&gt;&lt;br /&gt;Local Settings\History\History.IE5&lt;br /&gt;C:\Program Files\Common Files\InstallShield\Engine&lt;br /&gt;C:\Program Files\Common Files\InstallShield\ISCRIPT&lt;br /&gt;C:\Program Files\Common Files\Wise Installation Wizard&lt;br /&gt;C:\Program Files\WindowsUpdate&lt;br /&gt;C:\Program Files\InstallShield Installation Information&lt;br /&gt;C:\Program Files\Sophos SWEEP for NT&lt;br /&gt;C:\Program Files\Uninstall Information&lt;br /&gt;C:\WINDOWS\Debug&lt;br /&gt;C:\WINDOWS\Tasks&lt;br /&gt;C:\WINDOWS\Prefetch&lt;br /&gt;C:\WINDOWS\repair&lt;br /&gt;C:\WINDOWS\CSC&lt;br /&gt;C:\WINDOWS\System32\appmgmt&lt;br /&gt;C:\WINDOWS\System32\CatRoot&lt;br /&gt;C:\WINDOWS\System32\Config&lt;br /&gt;C:\WINDOWS\System32\dllcache&lt;br /&gt;C:\WINDOWS\System32\wbem&lt;br /&gt;Lmscript.pif&lt;br /&gt;Ttfcache&lt;br /&gt;Ffastlog?.*&lt;br /&gt;SMSCFG.ini&lt;br /&gt;Any Cookies&lt;br /&gt;TNSNAMES.ORA If Oracle package, then should be handled carefully. Should be deleted but entries to be appended through CA. Same for SQL.ORA and services file&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;• Registry:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;HKEY_CLASSES_ROOT\Interface - all keys under ‘Interface’ can be deleted as they will be recreated automatically&lt;br /&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\CLONE&lt;br /&gt;HKEY_LOCAL_MACHINE\SAM&lt;br /&gt;HKEY_LOCAL_MACHINE\Security&lt;br /&gt;HKEY_LOCAL_MACHINE\Enum&lt;br /&gt;HKEY_LOCAL_MACHINE\Hardware\&lt;br /&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Novell&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Program Groups\&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Classes\&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Description\Microsoft\Rpc\UuidPersistentData\&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Description\Microsoft\Rpc\UuidTemporaryData\&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Description\Microsoft\Rpc\UuidSequenceNumber\&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Driver Signing&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\DRM&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\EVENTSYSTEM&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\SMS&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\SystemCertificates&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Tracing&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Mounted Devices&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\WBEM&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Reliability&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Management&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Controls Folder&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run = Synchronization Manager&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Syncmgr&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Syncmgr\Autosync&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Windowsupdate&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\GroupPolicy\&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\WinLogon&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\PCHealth\PchSvc&lt;br /&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Dfrg\BootOptimizeFunction&lt;br /&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\System\Clone&lt;br /&gt;HKEY_LOCAL_MACHINE\System\Mounteddevices&lt;br /&gt;HKEY_LOCAL_MACHINE\System\Select&lt;br /&gt;HKEY_LOCAL_MACHINE\System\Setup&lt;br /&gt;HKEY_LOCAL_MACHINE\System\ControlSet000\&lt;br /&gt;HKEY_LOCAL_MACHINE\System\ControlSet001\&lt;br /&gt;HKEY_LOCAL_MACHINE\System\ControlSet002\&lt;br /&gt;HKEY_LOCAL_MACHINE\System\ControlSet003\&lt;br /&gt;HKEY_LOCAL_MACHINE\System\ControlSet004\&lt;br /&gt;HKEY_LOCAL_MACHINE\System\ControlSet005\&lt;br /&gt;HKEY_LOCAL_MACHINE\System\ControlSet006\&lt;br /&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\SessionManager\Environment\&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\hardwareProfiles\&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DHCP&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ E100b1\Parameters\Tcpip&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog\Security&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog\System&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\IDISW2KM\Enum&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Kmixer&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Netlogon&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NMSCFG\Security&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NWCWorkstation&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TRKWKS&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{8AAE3FAA-E935-4AB3-B74C-55E12729E3DA}&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\DHCP&lt;br /&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VCACHE&lt;br /&gt;&lt;br /&gt;HKEY_CURRENT_USER\SessionInformation&lt;br /&gt;HKEY_CURRENT_USER\Volatile Environment&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\GRPCONV&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\SessionInfo&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\StreamMRU&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\MountPoints&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\StartPage&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Prefetcher&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\IME\China\IMEPY\TIPMIG&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Syncmgr\Handlers&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar\Shellbrowser&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar\Explorer&lt;br /&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell&lt;br /&gt;HKEY_CURRENT_USER\Software\Policies\Microsoft\SystemCertificates&lt;br /&gt;HKEY_CURRENT_USER\Control Panel\Desktop&lt;br /&gt;HKEY_CURRENT_USER\Control Panel\Keyboard\InitialKeyboardIndicators&lt;br /&gt;&lt;br /&gt;HKEY_USERS\Software\Microsoft\SystemCertificates&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-4478927051092677712?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/4478927051092677712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=4478927051092677712' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/4478927051092677712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/4478927051092677712'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2008/08/exclusion-list.html' title='Exclusion List'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-1233277413185895257</id><published>2008-08-18T22:36:00.000-07:00</published><updated>2008-08-19T20:04:13.695-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='repair'/><category scheme='http://www.blogger.com/atom/ns#' term='eventviewr'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='troubleshoot'/><title type='text'>Troubleshooting Unnecessary Repairs</title><content type='html'>Sometimes you may encounter the problem of unnecessary repairs of &lt;a class="glossary-term" href="http://juice.altiris.com/glossary/1/letterm#term310"&gt;MSI&lt;/a&gt; while launching the shortcut in the same logged in user. Here is the way to troubleshoot this problem.&lt;br /&gt;You can go to eventviewr (by typing eventvwr in Run command) then to applications and check the latest error message after repair. It will tell you which component is missing and because of which MSI went for self heal.&lt;br /&gt;You can now check out this component in your package and see what the problem is. Maybe your keypath is a moving target for that component.&lt;br /&gt;&lt;br /&gt;There are other methods too which can be used in case the above does not work. These are Logs/Gap capture.&lt;br /&gt;&lt;br /&gt;More on this later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-1233277413185895257?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/1233277413185895257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=1233277413185895257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/1233277413185895257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/1233277413185895257'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2008/08/troubleshooting-unnecessary-repairs.html' title='Troubleshooting Unnecessary Repairs'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-310492375926462181</id><published>2008-08-18T22:33:00.000-07:00</published><updated>2008-08-19T20:05:19.172-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Action'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Installer'/><category scheme='http://www.blogger.com/atom/ns#' term='set property'/><category scheme='http://www.blogger.com/atom/ns#' term='type 51'/><title type='text'>Why Custom Action Type 51 is Required</title><content type='html'>If you have always wondered why we need to anSet Property Custom action when there is already a Property table to handle it, then this is for you.&lt;br /&gt;Suppose we have to create a property based on the value of another property - in that case we cannot use the Property table to handle this. There will be a circular reference in which one property would be based on the other.&lt;br /&gt;In this scenario we use Set Property Custom Action. To affect a property used in a condition on a component or feature, the &lt;a class="glossary-term" href="http://juice.altiris.com/glossary/1/letterc#term32"&gt;custom action&lt;/a&gt; must come before the CostFinalize action in the action sequence.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-310492375926462181?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/310492375926462181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=310492375926462181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/310492375926462181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/310492375926462181'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2008/08/why-custom-action-type-51-is-required.html' title='Why Custom Action Type 51 is Required'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-271796980606443707</id><published>2008-08-18T22:26:00.000-07:00</published><updated>2008-08-19T20:06:21.676-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='Order'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='Properties'/><category scheme='http://www.blogger.com/atom/ns#' term='Precedence'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Installer'/><title type='text'>Order of Precedence for Properties</title><content type='html'>The installer sets properties using the following order of precedence. A property value in this list can override a value that comes after it and be overridden by a value coming before it in the list.&lt;br /&gt;1) Properties specified by the operating environment.&lt;br /&gt;2)Public properties set on the command line.&lt;br /&gt;3)Public properties listed by the AdminProperties property set during an administrative installation.&lt;br /&gt;4)Public or private properties set during the application of a transform.&lt;br /&gt;5)Public or private property that set by authoring the Property table of the .MSI file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-271796980606443707?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/271796980606443707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=271796980606443707' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/271796980606443707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/271796980606443707'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2008/08/order-of-precedence-for-properties.html' title='Order of Precedence for Properties'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-4200107675159823110</id><published>2007-07-20T08:33:00.000-07:00</published><updated>2008-06-03T19:41:40.488-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Advertising info'/><title type='text'>Advertising info</title><content type='html'>The Darwin Descriptor for COM Advertising is stored as the InProcServer32 registry value.&lt;br /&gt;The advertised shortcut's TargetPath is a combination of the ProductCode &amp;amp; Darwin Descriptor + some tags. Open the shortcut using ex. notepad and you'll find the descriptor there.&lt;br /&gt;A Darwin Descriptor is an encoded string and when decoded produces a combination of the ProductCode, Feature &amp;amp; ComponentId(s).As the Darwin Descriptor is stored as a "REG_MULTI_SZ" entry it can contain more then one descriptor where other packages may have installed the same component.&lt;br /&gt;You should be able to find Darwin Descriptors under the following locations&lt;br /&gt;&lt;br /&gt;HKCR\CLSID\(clsid)\InprocServer32&lt;br /&gt;HKCR\Installer\AssembliesHKCR\Installer\Components&lt;br /&gt;HKCR\Installer\Win32Assemblies&lt;br /&gt;HKCR\(progid)\shell\(mycustomname;)\command&lt;br /&gt;HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\(sid)\Products\(compressed)\Features(targetpath)&lt;br /&gt;&lt;br /&gt;Contributor: AngelD (from juice.altris.com)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-4200107675159823110?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/4200107675159823110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=4200107675159823110' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/4200107675159823110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/4200107675159823110'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2007/07/advertising-info.html' title='Advertising info'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-899299197196982644</id><published>2007-06-17T12:32:00.000-07:00</published><updated>2007-06-17T12:34:22.157-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='property passing'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Action'/><category scheme='http://www.blogger.com/atom/ns#' term='directory passing.'/><title type='text'>Property passing in Custom action</title><content type='html'>If you want to pass property or a directory in Custom action then u can use Set Property Custom Action and place it after Cost Finalize. Name the property with the name of the Custom Action you want to pass it to. Then you can retain this property in Custom Action by Session.Property, If you are running this Custom Action in Deffered mode then you need to pass parameter as CustomActionData and if you are running this CA in Immediate Execution then you need to directly pass the property name.You can pass more that one property, by set property CA, by separating it with ";"Also while retrieving these valuues you need to split the variable in you retrieved from Session.Property.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-899299197196982644?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/899299197196982644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=899299197196982644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/899299197196982644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/899299197196982644'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2007/06/property-passing-in-custom-action.html' title='Property passing in Custom action'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-2295531554401765369</id><published>2007-05-14T04:26:00.000-07:00</published><updated>2007-05-14T04:33:57.155-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='User paths.'/><category scheme='http://www.blogger.com/atom/ns#' term='System paths'/><category scheme='http://www.blogger.com/atom/ns#' term='Environment Variables'/><title type='text'>Modify the System and User Paths</title><content type='html'>&lt;span style="color:#000099;"&gt;SUMMARY: The PATHMAN DOS command can make it easier to modify the system and user paths used by Windows XP.&lt;br /&gt;&lt;br /&gt;If you are in the C:\TEMP directory and type in NETSTAT at a command prompt to view active connection statistics, Windows will most likely not find "netstat.exe" in the C:\TEMP directory.&lt;br /&gt;&lt;br /&gt;However, the C:\WINDOWS\SYSTEM32 directory is in what's called the path, or a list of directories Windows uses if it can't find an executable in the current directory. Since C:\WINDOWS\SYSTEM32 contains the file "netstat.exe", Windows will run the command from there.&lt;br /&gt;&lt;br /&gt;By using the SET command with the PATH environment variable, you can modify Windows XP's path. However, doing so can be messy and error-prone.&lt;br /&gt;&lt;br /&gt;If you frequently need to modify the PATH, the Windows 2003 Resource Kit comes built-in with a command called PATHMAN, or Path Manager, that lets you cleanly modify the system and user paths.&lt;br /&gt;&lt;br /&gt;To use this command, you'll need to first &lt;/span&gt;&lt;a class="bodytext" href="http://malektips.com/xp_dos_0001.html" target="_new"&gt;&lt;span style="color:#000099;"&gt;download and install the Windows 2003 Resource Kit&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000099;"&gt;.&lt;br /&gt;&lt;br /&gt;Then you can run pathman.exe and use one of the following options:&lt;br /&gt;&lt;br /&gt;/as PATHAdds a semicolon-separated PATH to the system path&lt;br /&gt;/au PATHAdds a semicolon-separated PATH to the user path&lt;br /&gt;/rs PATHRemoves a semicolon-separated PATH from the system path&lt;br /&gt;/ru PATHRemoves a semicolon-separated PATH from the user pathExamples:C:\&gt;pathman /as c:\morecommands&lt;br /&gt;This adds the directory "c:\morecommands" to the system path.&lt;br /&gt;After restarting the current command prompt or opening a new command prompt, any batch files or executables located in the "c:\morecommands" directory are now executable from anywhere on your system.&lt;br /&gt;Type the following command in a new DOS window to see your modified PATH environment variable:&lt;br /&gt;C:\&gt;set path&lt;br /&gt;Now, to remove the directory from the path:C:\&gt;pathman&lt;br /&gt;/rs c:\morecommands&lt;br /&gt;This removes the directory "c:\morecommands" from the system path.&lt;br /&gt;After restarting the current command prompt or opening a new command prompt, any batch files or executables located in the "c:\morecommands" directory will only be executable from within the "c:\morecommands" directory.&lt;br /&gt;Type the following command in a new DOS window to see your modified PATH environment variable:&lt;br /&gt;C:\&gt;set path&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Source: &lt;/em&gt;&lt;/span&gt;&lt;a href="http://malektips.com/xp_dos_0017.html"&gt;&lt;em&gt;&lt;span style="color:#000099;"&gt;http://malektips.com/xp_dos_0017.html&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-2295531554401765369?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/2295531554401765369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=2295531554401765369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/2295531554401765369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/2295531554401765369'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2007/05/modify-system-and-user-paths.html' title='Modify the System and User Paths'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-116038168043226906</id><published>2006-10-09T01:14:00.000-07:00</published><updated>2011-08-04T17:36:58.935-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='ICE Errors'/><category scheme='http://www.blogger.com/atom/ns#' term='Internal Consistency Evaluators'/><title type='text'>ICE Errors</title><content type='html'>&lt;div align="left"&gt;Hi All,&lt;br /&gt;&lt;br /&gt;My this post details about what ICE errors, how to check them and how to correct them. Many of you might be facing this problem. &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-size:130%;"&gt;&lt;u&gt;What are ICE Errors&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;strong&gt;ICEs - Internal Consistency Evaluators&lt;/strong&gt;&lt;br /&gt;&lt;a name="setup.internal_consistency_evaluators_ices"&gt;&lt;/a&gt;&lt;br /&gt;Internal consistency evaluators, also called ICEs, are custom actions written in VBScript, JScript, or as a DLL or EXE. When these custom actions are executed, they scan the database for entries in database records that are valid when examined individually but that may cause incorrect behavior in the context of the whole database.&lt;br /&gt;For example, the Component table may list several components that are all valid when tested individually with MsiViewModify. However, MsiViewModify would not catch the error when two components use the same GUID as their component code. The custom action ICE08 is designed to validate that the Component table does not contain duplicate component code GUIDs.&lt;br /&gt;ICE custom actions return four kinds of messages:&lt;br /&gt;&lt;strong&gt;Errors:&lt;/strong&gt; Error messages report database authoring that cause incorrect behavior. For example, duplicate component GUIDs cause the installer to incorrectly register components.&lt;br /&gt;&lt;strong&gt;Warnings&lt;/strong&gt; Warning messages report database authoring that causes incorrect behavior in certain cases. Warnings can also report unexpected side-effects of database authoring. For example, entering the same property name in two conditions that differ only by the case of letters in the name. Because the installer is case-sensitive, the installer treats these as different properties.&lt;br /&gt;&lt;strong&gt;Failures&lt;/strong&gt; Failure messages report the failure of the ICE custom action. Failure is commonly caused by a database with such severe problems that the ICE cannot even run.&lt;br /&gt;&lt;strong&gt;Informational&lt;/strong&gt; Informational messages provide information from the ICE and do not indicate a problem with the database. Often they are information about the ICE itself, such as a brief description. They can also provide progress information as the ICE runs. &lt;/div&gt;&lt;div align="left"&gt;&lt;em&gt;(Source: MSDN)&lt;/em&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="font-size:130%;"&gt;How to get ICE Error report&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;The most easy way of getting the ICE error report is by using ORCA tool.&lt;br /&gt;You can download it from the net and can install it to your PC. When you right click on any MSI then you will get an option: Edit with ORCA. Once you have clicked on that, The MSI will open and you can see all the tables present in the MSI. MSI is nothing but a relational database. This will be proved to you when you see all these tables.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#ff0000;"&gt;&lt;strong&gt;&lt;em&gt;&lt;u&gt;CAUTION:&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt; Be careful of doing any changes to these tables. Any wrong entry or modification can crash your system or your MSI.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="font-size:130%;"&gt;How to Correct ICE Errors&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;ICE Errors are easy to remove, once you get a hands on experience on them. &lt;/p&gt;&lt;p&gt;Try this link below from MSDN, where you can find the description of lots of ICE Errors.&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa369206(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa369206(VS.85).aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You can directly make changes in the Tables through ORCA and can save the MSI. There is no need to again recompile the WSI then. If you recompile the WSI then you need to recheck the ICE Errors.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#ff0000;"&gt;&lt;em&gt;Point to note:&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt; The removal of ICE error is the best practise in creation of MSI. You should always remove all the ICE Errors from your package.&lt;/p&gt;&lt;p&gt;So all the best for ICE Errors....&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-116038168043226906?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/116038168043226906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=116038168043226906' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/116038168043226906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/116038168043226906'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2006/10/ice-errors.html' title='ICE Errors'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-114994552570334978</id><published>2006-06-10T06:14:00.000-07:00</published><updated>2012-01-05T14:39:08.854-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSI'/><category scheme='http://www.blogger.com/atom/ns#' term='FAQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Installer'/><title type='text'>Frequently Asked Questions about Windows Installer (MSI) Packaging.</title><content type='html'>&lt;span style="color: #993399;"&gt;These are the most Frequestly asked queries, which I have compiled from lots of places and have put together.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;I have added more questions in other post which can be accessed by below link.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://msiworld.blogspot.com/2011/11/frequently-asked-questions-about-com.html"&gt;http://msiworld.blogspot.com/2011/11/frequently-asked-questions-about-com.html&lt;/a&gt;&lt;br /&gt;&lt;div align="center" class="MsoNormal" style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span style="color: #993399;"&gt;Q. &lt;/span&gt;&lt;/b&gt;&lt;a href="javascript:toggleQuestion("&gt;&lt;span style="color: #993399; text-decoration: none;"&gt;What is Windows Installer?&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;A.&lt;/b&gt; Windows Installer is a system service for installing and managing applications. It provides a standard method for developing, customizing, installing, and updating applications.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;/div&gt;&lt;span style="color: #993399;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;Q.&lt;/b&gt; &lt;/span&gt;&lt;a href="javascript:toggleQuestion("&gt;&lt;span style="color: #993399; text-decoration: none;"&gt;What basic functionality is provided by Windows Installer?&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;A.&lt;/b&gt; Windows Installer provides the following basic functions:&lt;span style="line-height: 130%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;Transactional operations.&lt;/b&gt;&lt;span style="line-height: 130%;"&gt; &lt;/span&gt;All installation operations are transactional. For each operation that Windows Installer performs, it generates an equivalent undo operation that would undo the change made to the system. If a failure occurs during the middle of an installation, Windows Installer can roll back the machine to its original state.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;Self-healing.&lt;/b&gt;&lt;span style="line-height: 130%;"&gt; &lt;/span&gt;Windows Installer supports "self-healing" abilities for applications. Applications can detect common installation problems at launch, like missing files or registry keys, and automatically repair themselves.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;Installation on demand.&lt;/b&gt; Windows Installer supports on-demand installations of application features. For example, the spelling checker in Microsoft Office Word may not be installed by default, but a user can trigger an on-demand installation of this feature.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;Installation in locked-down environments.&lt;/b&gt; In fully locked-down environments, users don't generally have permission or the ability to install applications. In most cases, they don't have write-access to the Program Files folder of their computers or to the HKEY_LOCAL_MACHINE registry location. If an administrator approves an installation package by means of Group Policy, for instance, Windows Installer can perform an installation on the user's behalf.&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;State management.&lt;/b&gt; Windows Installer provides a set of standard Win32® application programming interfaces (APIs) and automation interfaces for applications and administrators to use for querying the installation state on the machine. The APIs allow querying of the current state, verification of the existing state, repair of a corrupted state, and transition from one state to another.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;/div&gt;&lt;span style="color: #993399;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;b&gt;&lt;span style="color: #993399;"&gt;Q. &lt;/span&gt;&lt;/b&gt;&lt;a href="javascript:toggleQuestion("&gt;&lt;span style="color: #993399; text-decoration: none;"&gt;What versions of Windows include Windows Installer?&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;A. &lt;/b&gt;Microsoft Windows 2000, Windows Millennium Edition (Windows Me), and Windows XP include Windows Installer. Windows 2000 includes version 1.1 of Windows Installer, Windows Me includes version 1.2, and Windows XP includes version 2.0. Windows 2000 SP3 also contains version 2.0 of Windows Installer.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;/div&gt;&lt;span style="color: #993399;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;b&gt;&lt;span style="color: #993399;"&gt;Q. &lt;/span&gt;&lt;/b&gt;&lt;a href="javascript:toggleQuestion("&gt;&lt;span style="color: #993399; text-decoration: none;"&gt;Why are multiple MSIExec.exe processes running on my machine during an installation?&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;A&lt;/b&gt;. A number of MSIExec processes can be running during an installation. The reason for this is that Windows Installer uses a client-server model for performing installations. Additionally for security reasons, Windows Installer hosts DLL and script custom actions in a "sandbox" process. Depending on how the install was initiated, one of the MSIExec processes can be the client process. Another MSIExec process is Windows Installer service. Any remaining MSIExec processes are usually sandbox processes for hosting custom actions. The determination as to which MSIExec process will serve as the sandbox process for a script or DLL custom action depends in part on whether the custom action will run elevated or impersonated and whether the custom action is 32-bit or 64-bit.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;Q. What is an MST, and why it is used?&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;A. Whenever there is a vendor supplied MSI, then it is not recommended to do capture the MSI, hence all the changes need to be done in the MSI are done is a Microsoft Transform. Then this MST file is applied on the MSI with the following command line.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;/div&gt;&lt;span style="color: #993399;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;MSIEXEC /I {path}\file.msi TRANSFORMS={path}\file.mst /q&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;/div&gt;&lt;span style="color: #993399;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;Where {path} is the location of the folder where MSI and MST are kept.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;Q.&lt;/b&gt; &lt;/span&gt;&lt;a href="javascript:toggleQuestion("&gt;&lt;span style="color: #993399; text-decoration: none;"&gt;What are the differences between small, minor, and major updates?&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;A.&lt;/b&gt; A small update is a product update that changes a few files or possibly adds some new content. A minor update is a product update that makes enough changes to warrant changing the product version for the product, whereas a major update is a product update with a large number of changes that warrants a change in the product code. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;It's sometimes easier to think of a small update as a "hotfix" or Quick Fix Engineering (QFE) update, a minor update as a service pack, and a major update as a product upgrade.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;Small and minor updates can be considered almost equal in that the only real difference is that a minor update has a change to the ProductVersion whereas a small update does not. The rules that they follow and application of the patch are the same. Application of small and minor update patches requires explicit reinstallations. Major updates are not subject to that limitation and a reinstallation is not required for patch application. Additionally small and minor update patches are limited in the changes that can be made to the feature-component structure for the package. Significant changes can be made to the feature-component structure in the scope of a major update.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;a href="http://www.blogger.com/" name="wp-Logical_structure_of_packages"&gt;&lt;/a&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;Q.&lt;/b&gt; What is the Logical structure of package?&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;A. &lt;/b&gt;A package describes the installation of a full product (Windows Installer does not handle dependencies between products) and is universally identified by a GUID. A product is made up of components, grouped into features.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;a href="http://www.blogger.com/" name="wp-Components"&gt;&lt;/a&gt;&lt;b&gt;&lt;span style="color: #993399;"&gt;Components&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;A component is the minimal part of a product—each component is treated by Windows Installer as a unit: the install developer cannot, for example, use a condition to specify to install just part of a component. Components can contain files, groups of files, directories, COM components, registry keys, shortcuts, and other data. The end user does not directly interact with components.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;Components are identified globally by GUIDs, thus the same component can be shared among several features of the same package or multiple packages, ideally through the use of merge modules (although, for this to work correctly, different components should not share any sub-components).&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;a href="http://www.blogger.com/" name="wp-Key_paths"&gt;&lt;/a&gt;&lt;b&gt;&lt;span style="color: #993399;"&gt;Key paths&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;A key path is a specific file, registry key, or ODBC data source that the package author specifies as critical for a given component. Because a file is the most common type of key path, the term key file is commonly used. A component can contain at most one key path; if a component has no explicit key path, the component's destination directory is taken to be the key path. When an MSI-based application is launched, Windows Installer checks the existence of these critical files or registry keys (that is, the key paths). If there is a mismatch between the current system state and the value specified in the MSI package (e.g., a key file is missing), then the related feature is re-installed. This process is also known as self-healing or self-repair. No two components should use the same key path.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;a href="http://www.blogger.com/" name="wp-Features"&gt;&lt;/a&gt;&lt;b&gt;&lt;span style="color: #993399;"&gt;Features&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;A feature is a hierarchical group of components—a feature can contain any number of components and other features (a feature contained in another feature is called a "subfeature"). Most installation programs display a "custom setup" dialog box at run time, from which the end user can select which features to install or remove.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;The package author defines the product features. A word-processing program, for example, might provide features for the main program executable, the program's help files, and optional spelling checker and stationery modules.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;/div&gt;&lt;span style="color: #993399;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;/div&gt;&lt;span style="color: #993399;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;a href="http://www.blogger.com/" name="wp-Setup_phases"&gt;&lt;/a&gt;&lt;a href="http://www.blogger.com/" name="wp-Other_features"&gt;&lt;/a&gt;&lt;a href="http://www.blogger.com/" name="wp-Advertisement"&gt;&lt;/a&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;Q.&lt;/b&gt; What is Advertisement?&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;A.&lt;/b&gt; Windows Installer can advertise a product rather than actually installing it. The product will appear installed to the user, but it will not actually be installed until it is run for the first time (by means of a Start menu shortcut, by opening a document that the product is configured to handle, or by invoking an advertised COM class).&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;a href="http://www.blogger.com/" name="wp-Installation_on_demand"&gt;&lt;span style="color: #993399;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;/div&gt;&lt;span style="color: #993399;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;Q.&lt;/b&gt; What is Installation on demand?&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;A. &lt;/b&gt;Similar to advertisement, it consists in the installation of features as soon as the user tries to use them.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;a href="http://www.blogger.com/" name="wp-Miscellaneous"&gt;&lt;span style="color: #993399;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;a href="http://www.blogger.com/" name="wp-Diagnostic_Logging"&gt;&lt;/a&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;Q.&lt;/b&gt; How to do Diagnostic Logging?&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;A. &lt;/b&gt;Windows Installer supports detailed logging as a powerful diagnostic tool. Logging can be enabled in the following four ways:&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;Command-line&lt;/b&gt;: If installing an MSI package from the command-line, the /L switch can be used to enable logging. For example, the following command installs Package.msi and outputs verbose logging to c:\Package.log: &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;msiexec /i Package.msi /l*v c:\package.log &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;Windows Registry:&lt;/b&gt; The following registry value can be used to enable verbose logging: &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;Key: HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;Value Name: Logging &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;Type: REG_SZ &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;Data: voicewarmup &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;The resulting log is named MSI###.log (where "###" is a unique random identifier) and is placed in the system's Temp directory.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;Group Policy:&lt;/b&gt; The following Group Policy setting can be used to manage logging on multiple systems: &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;Computer Configuration -&amp;gt; Administrative Templates -&amp;gt; Windows Components -&amp;gt; Windows Installer -&amp;gt; Logging. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;Windows Installer API: If installing an MSI package programmatically, the MsiEnableLog function call can be used to create a log file and determine the logging level for the life of the calling process. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;Although verbose logs are very useful for diagnosing Windows Installer problems, they can be very long and difficult to read without practice. A quick way to find the location of a problem in the log is to open it in a text editor (such as Notepad) and search for the phrase "Return Value 3". This entry commonly appears in logs close to the point where a critical error has occurred. The Windows Installer SDK provides a tool called WiLogUtl, which parses and annotates Windows Installer log files.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;/div&gt;&lt;span style="color: #993399;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;/div&gt;&lt;span style="color: #993399;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;Q. &lt;/b&gt;&lt;span style="font-size: 0px;"&gt;&lt;/span&gt;Why does the package go for Self Healing first time the user launches the Application?&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;A. &lt;/b&gt;If the package is containing some HKCU entries then the package will always go for self healing for the first time. This happens because the HKCU keys are only installed for the current user present while installing the package and not all the users as it is the property of the HKCU. So, if other user logs in then there is a mismatch between the current system state and the value specified in the MSI package (e.g., a key file is missing), then the related feature is re-installed. This is called the Self Healing.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;/div&gt;&lt;span style="color: #993399;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;Q.&lt;/b&gt; How do detect the MSI version on the computer?&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;span style="color: #993399;"&gt;&lt;b&gt;A.&lt;/b&gt; If you want to check the version of the Windows Installer on your system, check the version of MSI.DLL in the Windows\System 32 folder.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: 130%;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="color: #993399;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="color: #993399;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-114994552570334978?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/114994552570334978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=114994552570334978' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/114994552570334978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/114994552570334978'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2006/06/frequently-asked-questions-about.html' title='Frequently Asked Questions about Windows Installer (MSI) Packaging.'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29452818.post-114982537148895540</id><published>2006-06-08T20:52:00.000-07:00</published><updated>2006-06-09T01:44:30.823-07:00</updated><title type='text'>My first Words</title><content type='html'>Welcome all,&lt;br /&gt;&lt;br /&gt;This is a blog, which I have created for describing my experiences in MSI technology.&lt;br /&gt;Presently I am working on WISE tool for creating MSI.&lt;br /&gt;&lt;br /&gt;You all are welcome to have a look at my experiences and post your comments about them.&lt;br /&gt;Some of my experiences might help you sometimes while you are packaging something similar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29452818-114982537148895540?l=msiworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://msiworld.blogspot.com/feeds/114982537148895540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29452818&amp;postID=114982537148895540' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/114982537148895540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29452818/posts/default/114982537148895540'/><link rel='alternate' type='text/html' href='http://msiworld.blogspot.com/2006/06/my-first-words.html' title='My first Words'/><author><name>Piyush Nasa</name><uri>http://www.blogger.com/profile/11750828958665245404</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_goeskL683dw/SSt03EjwJwI/AAAAAAAAEkc/INbuZAekNdY/S220/ATgAAADAzsJP-oQKiGlhwUKqQCDplO4sg9SiJb_uSAy9zTkl0kojDCxhtPJhUAvlpkbtm2CLbjCuVxVczpIxWqNOCQiEAJtU9VA0G0rdzZ8LVKuHzONkINPQV2JHwA.jpg'/></author><thr:total>5</thr:total></entry></feed>
