- Action run only during Install
Condition: NOT Installed - Action only runs during removal of MSI
Condition: REMOVE="ALL" - Action runs during Install and repair
Condition: NOT REMOVE
Sunday, 28 August 2011
Custom Action Conditions in MSI
You can execute a custom action or make the component install using conditions as per the requirement.
Difference Between Self Heal and Repair
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.
Self Heal is triggered by advertised shortcuts, or other advertising information in the package which eventually Repairs the application.
When the application is launched by advertised shortcut, it checks for all the key paths of the Current Feature, if any of the key paths is missing it will launch Repair.
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.
Repair of an MSI can be triggered by
Self Heal is triggered by advertised shortcuts, or other advertising information in the package which eventually Repairs the application.
When the application is launched by advertised shortcut, it checks for all the key paths of the Current Feature, if any of the key paths is missing it will launch Repair.
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.
Repair of an MSI can be triggered by
- Repair from Add/Remove programs
- Command - msiexec /f{other option} {MSI path}
- Self Heal by advertised shortcut or other advertising information.
- Active setup
A Guide to MSI Healing
This describes several methods of MSI healing (repair) techniques to populate HKCU keys for other users.
The best methods are documented first with other alternative ways following later.
Active Setup Method:
This is one of the best practices in MSI Packaging which uses the native Active Setup behavior of Windows XP and Windows Installer HKCU keys repair techniques.
One should follow these specific steps while using this method:
Make sure all HKCU keys in the MSI Package that we are creating are under structured component names like CurrentUser, CurrentUser1, etc.
The Package author should be able to judge and set the key path for that Component properly.
As per Microsoft Component guidelines, make sure the components containing HKCU keys are as few in count as possible, for example only one component (CurrentUser) with all HKCU keys with best key path set is the best practice.
Create the following registry keys under the main hive:
HKLM\Software\Microsoft\Active Setup\Installed Components\{GUID of the MSI}
ComponentID=PackageName_ComponentName
StubPath=[SystemFolder]msiexec.exe /fu {Product Code of the MSI} /q
Version=ProductVersion
The principle of Active Setup behavior is when a new user logs on for the first time, then the Active Setup will perform a checksum between HKLM\Software\Microsoft\Active Setup\Installed Components\{GUID of the MSI} and
HKCU\Software\Microsoft\Active Setup\Installed Components\{GUID of the MSI};
and if the GUID is not present under HKCU, then it performs all actions which are under that main hive (StubPath, Version) and populates the GUID under HKCU. The main Advantage of Active Setup is it performs an action only once per User with the Checksum behavior by matching the entries under HKLM and HKCU.
Active Setup Method:
This method can be used for both MSIs and Non-MSIs (SMS or WSE Script executables).
Create a silent SMS script or Wise Script (for eg:-Script.exe) which will create the needed HKCU registry entries for the application. Then place that EXE in the Application [INSTALLDIR] in your MSI Pkg or Executable binary memory.
Then create the following additional registry entries in the MSI Package or within the Script whichever is applicable:
HKLM\Software\Microsoft\Active Setup\Installed Components\{GUID or AppName}
ComponentID=PackageName_ComponentName
StubPath="[INSTALLDIR]Script.exe"
Version=ProductVersion
The Active Setup performs the regular checksum (comparison of entries under) HKLM and HKCU and if the respective unique GUID or AppName is not present under HKCU hive, then it will perform all actions (StubPath, Version) and populates the GUID or AppName under HKCU hive too. This is only once per user -- for the first time -- to populate HKCU hive.
Method I and method II use the Active Setup feature, and One should understand the advantages of one over the other. Method I requires source resiliency to populate HKCU keys, where as method II does not require this as the Script.exe does everything.
Method I and method II can be used in any scenarios like if Advertised entry points are present or NOT present.
Windows Installer repair method with SMS or Wise Script:
Typically the body of the script will be;
Check for the existence of a Flag key under
HKCU\Software\Company Name\Applications\{ProductName][productversion]
Installed=True
If the key exists then quit else initiate the Windows Installer repair to populate HKCU keys:
Msiexec /fu {Product Code of the MSI} /q
And edit and create registry key (Basically a Flag Key which can be any key which your firm adopts)
HKCU\Software\XYZ*\Applications\{ProductName][productversion]
Installed=True
End
* XYZ= Name of the organization \ Company
And keep this script exe in HKLM\Software\Microsoft\Windows\CurrentVersion\Run.
One should keep in mind that the /p switch can also be used to repair files (populate) user-specific data (Profile data) with the following syntax:
Msiexec /fup {Product Code Of the MSI) /q
Silent empty exe with valid shortcut:
Create a silent empty exe and its Advertised shortcut and place both of them in the Application [INSTALLDIR]. And use them as entry points to trigger healing to populate HKCU keys.
The best methods are documented first with other alternative ways following later.
Method I
Active Setup Method:
This is one of the best practices in MSI Packaging which uses the native Active Setup behavior of Windows XP and Windows Installer HKCU keys repair techniques.
One should follow these specific steps while using this method:
Make sure all HKCU keys in the MSI Package that we are creating are under structured component names like CurrentUser, CurrentUser1, etc.
The Package author should be able to judge and set the key path for that Component properly.
As per Microsoft Component guidelines, make sure the components containing HKCU keys are as few in count as possible, for example only one component (CurrentUser) with all HKCU keys with best key path set is the best practice.
Create the following registry keys under the main hive:
HKLM\Software\Microsoft\Active Setup\Installed Components\{GUID of the MSI}
ComponentID=PackageName_ComponentName
StubPath=[SystemFolder]msiexec.exe /fu {Product Code of the MSI} /q
Version=ProductVersion
The principle of Active Setup behavior is when a new user logs on for the first time, then the Active Setup will perform a checksum between HKLM\Software\Microsoft\Active Setup\Installed Components\{GUID of the MSI} and
HKCU\Software\Microsoft\Active Setup\Installed Components\{GUID of the MSI};
and if the GUID is not present under HKCU, then it performs all actions which are under that main hive (StubPath, Version) and populates the GUID under HKCU. The main Advantage of Active Setup is it performs an action only once per User with the Checksum behavior by matching the entries under HKLM and HKCU.
Method II
Active Setup Method:
This method can be used for both MSIs and Non-MSIs (SMS or WSE Script executables).
Create a silent SMS script or Wise Script (for eg:-Script.exe) which will create the needed HKCU registry entries for the application. Then place that EXE in the Application [INSTALLDIR] in your MSI Pkg or Executable binary memory.
Then create the following additional registry entries in the MSI Package or within the Script whichever is applicable:
HKLM\Software\Microsoft\Active Setup\Installed Components\{GUID or AppName}
ComponentID=PackageName_ComponentName
StubPath="[INSTALLDIR]Script.exe"
Version=ProductVersion
The Active Setup performs the regular checksum (comparison of entries under) HKLM and HKCU and if the respective unique GUID or AppName is not present under HKCU hive, then it will perform all actions (StubPath, Version) and populates the GUID or AppName under HKCU hive too. This is only once per user -- for the first time -- to populate HKCU hive.
Method I and method II use the Active Setup feature, and One should understand the advantages of one over the other. Method I requires source resiliency to populate HKCU keys, where as method II does not require this as the Script.exe does everything.
Method I and method II can be used in any scenarios like if Advertised entry points are present or NOT present.
Method III
Windows Installer repair method with SMS or Wise Script:
Typically the body of the script will be;
Check for the existence of a Flag key under
HKCU\Software\Company Name\Applications\{ProductName][productversion]
Installed=True
If the key exists then quit else initiate the Windows Installer repair to populate HKCU keys:
Msiexec /fu {Product Code of the MSI} /q
And edit and create registry key (Basically a Flag Key which can be any key which your firm adopts)
HKCU\Software\XYZ*\Applications\{ProductName][productversion]
Installed=True
End
* XYZ= Name of the organization \ Company
And keep this script exe in HKLM\Software\Microsoft\Windows\CurrentVersion\Run.
One should keep in mind that the /p switch can also be used to repair files (populate) user-specific data (Profile data) with the following syntax:
Msiexec /fup {Product Code Of the MSI) /q
Method IV
Silent empty exe with valid shortcut:
Create a silent empty exe and its Advertised shortcut and place both of them in the Application [INSTALLDIR]. And use them as entry points to trigger healing to populate HKCU keys.
Tuesday, 9 August 2011
Application Packaging Training - September Batch
New batch of Application Packaging Classroom training is starting at Hyderabad on 3rd September. If you are interested contact me at 91-9963678795 or Virtual.App.Packager@gmail.com
For training details please visit www.AppRepack.in
For training details please visit www.AppRepack.in
Friday, 15 July 2011
Application Packaging Training @ Hyderabad
New batch of Application Packaging Classroom training is starting at Hyderabad on 2nd August. If you are interested contact me at 91-9963678795 or Virtual.App.Packager@gmail.com
For training details please visit www.AppRepack.in
For training details please visit www.AppRepack.in
Friday, 1 July 2011
Weekend Training on Application Packaging @ Hyderabad
Im Starting Application Packaging Classroom training Weekend batch from July 3rd 2011.
You can view the list of topics that would be covered in training in following URL
http://www.apprepack.in
Contact me if anyone on Virtual.App.Packager@gmail.com OR +91-9963678795 if you are interested
You can view the list of topics that would be covered in training in following URL
http://www.apprepack.in
Contact me if anyone on Virtual.App.Packager@gmail.com OR +91-9963678795 if you are interested
Wednesday, 22 June 2011
Application Packaging Training @ Hyderabad
I would like to Invite for New batch of Application Packaging Classroom Training at Hyderabad starting June 28 2011.
Course Duration: 1 Month ( 1hr/day)
Timings: 9am to 10am.
Anyone interested in online training?, please contact me on Arjun@AppRepack.in so that I can accommodate you in Online Training batch.
Please visit www.AppRepack.in for more information on training topics.
Course Duration: 1 Month ( 1hr/day)
Timings: 9am to 10am.
Anyone interested in online training?, please contact me on Arjun@AppRepack.in so that I can accommodate you in Online Training batch.
Please visit www.AppRepack.in for more information on training topics.
Subscribe to:
Posts (Atom)