Self Healing Documentation
Hi,
I'm looking on documentation that can explain exactly how the self healing process works.
Thanks in advance.
I'm looking on documentation that can explain exactly how the self healing process works.
Thanks in advance.
0 Comments
[ + ] Show comments
Answers (20)
Please log in to answer
Posted by:
WiseUser
19 years ago
Here's a really simple demo I just made up that some people may find interesting?
You'll need a copy of "Setacl.ocx" which you can download from here:
http://setacl.sourceforge.net
1) Copy "Setacl.ocx" to "C:\Windows\System32\" (or where ever your "System32" folder is).
2) Register it there using one of the following methods:
a) Regsvr32 %SystemRoot%\System32\Setacl.ocx
b) Rundll32 %SystemRoot%\System32\Setacl.ocx,DllRegisterServer
3) Create a new MSI project, and add "Setacl.ocx" to the "SystemFolder" ("System32").
4) Compile your project and check that the advertising information has been added correctly (within the same component as the "Setacl.ocx" file).
5) Install your new MSI per-machine (ALLUSERS=1).
6) Create a ".vbs" script on your desktop with the following content:
Set oTest = CreateObject("SETACL.SetACLCtrl.1")
Set oTest = Nothing
7) Run the script (double click) - nothing should happen.
8) Delete "C:\Windows\System32\Setacl.ocx".
9) Run the script again. Assuming you've done everything right, it should self-repair.
For those who might be interested, the relevant registry key that enables this behaviour is the following multistring key:
"HKCR\CLSID\{17738736-8831-4197-ACA5-A740A050B4CF}\InprocServer32\InprocServer32"
You'll need a copy of "Setacl.ocx" which you can download from here:
http://setacl.sourceforge.net
1) Copy "Setacl.ocx" to "C:\Windows\System32\" (or where ever your "System32" folder is).
2) Register it there using one of the following methods:
a) Regsvr32 %SystemRoot%\System32\Setacl.ocx
b) Rundll32 %SystemRoot%\System32\Setacl.ocx,DllRegisterServer
3) Create a new MSI project, and add "Setacl.ocx" to the "SystemFolder" ("System32").
4) Compile your project and check that the advertising information has been added correctly (within the same component as the "Setacl.ocx" file).
5) Install your new MSI per-machine (ALLUSERS=1).
6) Create a ".vbs" script on your desktop with the following content:
Set oTest = Nothing
7) Run the script (double click) - nothing should happen.
8) Delete "C:\Windows\System32\Setacl.ocx".
9) Run the script again. Assuming you've done everything right, it should self-repair.
For those who might be interested, the relevant registry key that enables this behaviour is the following multistring key:
Posted by:
brenthunter2005
19 years ago
With regards to your .OCX example, Internet Explorer needs to "see" this OCX installed on your computer by way of ProgID and/or CLSID (depending on the control) and therefore these can be included in your MSI in the Advertising tables (ProgID and Class tables) and be "entry points".
If the MSI were authored correctly using the Advertising tables, when needed Internet Explorer would initiate the "installation" or "repair" of your MSI containing the OCX file etc.
[&:]I really hope I explained it properly there...[&:]
If the MSI were authored correctly using the Advertising tables, when needed Internet Explorer would initiate the "installation" or "repair" of your MSI containing the OCX file etc.
[&:]I really hope I explained it properly there...[&:]
Posted by:
VikingLoki
19 years ago
This should help. Found the link in Wise KB, article 1389 (http://www.wise.com/kbarticle.aspx?articleno=1389). It doesn't appear to be on the Wise site though. Mystery solved by an unknown source??
http://209.104.132.210/filelib/KB/WindowsInstallerRepair.pdf
http://209.104.132.210/filelib/KB/WindowsInstallerRepair.pdf
Posted by:
VikingLoki
19 years ago
I'm not sure if this documentation is entirely correct, or complete. Everyone, read the doc above and see what you think about the following scenario.
Suppose you have 2 features, Complete & UserProfileStuff, both top level features. All advertised shortcuts, exe & dll's are in the Complete feature. UseProfileStuff contains a few files in [CurrentUserProfile]\Application Data and a few registry keys in HKCU (Not policy keys).
According to this doc, component keypaths of UserProfileStuff would not be checked because the advertised shortcuts would only cause Complete to be checked and since UserProfileStuff is not its parent, it's not checked. The only time UserProfileStuff would be checked is if Complete is found to be corrupted. That can't be right... could it?
Suppose you have 2 features, Complete & UserProfileStuff, both top level features. All advertised shortcuts, exe & dll's are in the Complete feature. UseProfileStuff contains a few files in [CurrentUserProfile]\Application Data and a few registry keys in HKCU (Not policy keys).
According to this doc, component keypaths of UserProfileStuff would not be checked because the advertised shortcuts would only cause Complete to be checked and since UserProfileStuff is not its parent, it's not checked. The only time UserProfileStuff would be checked is if Complete is found to be corrupted. That can't be right... could it?
Posted by:
brenthunter2005
19 years ago
Posted by:
VikingLoki
19 years ago
Posted by:
VikingLoki
19 years ago
Posted by:
brenthunter2005
19 years ago
From the SDK:
So 95% of the time 'entry points' are basically just shortcuts and file associations...... [:D]
Shortcuts and their icons. Extensions and their icons specified in the ProgId Table. Shell and command Verbs registered underneath the ProgId key. CLSID contexts and InProcHandler. Install-On-Demand through OLE is only available programmatically through CoCreateInstance (C/C++) and CreateObject or GetObject (Visual Basic).
So 95% of the time 'entry points' are basically just shortcuts and file associations...... [:D]
Posted by:
GB1
19 years ago
Posted by:
VikingLoki
19 years ago
Thanks Brent, that gives me a direction.
Hmmm... I can think of two situations where I'm packaging without defining entry points. That would be an .OCX supporting a web app, and something like Oracle Client which is called by other apps. Looking over the Windows Installer docs, advertising ProgID, ClassID, verbs, etc just looks like a bunch of puzzle pieces. I'm not seeing the big picture. Would either of these be applicable as an entry point for the two examples above?
Hmmm... I can think of two situations where I'm packaging without defining entry points. That would be an .OCX supporting a web app, and something like Oracle Client which is called by other apps. Looking over the Windows Installer docs, advertising ProgID, ClassID, verbs, etc just looks like a bunch of puzzle pieces. I'm not seeing the big picture. Would either of these be applicable as an entry point for the two examples above?
Posted by:
WiseUser
19 years ago
Posted by:
VikingLoki
19 years ago
Posted by:
WiseUser
19 years ago
Posted by:
VikingLoki
19 years ago
Posted by:
WiseUser
19 years ago
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
so that the conversation will remain readable.