mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2026-01-04 15:00:53 +01:00
* Do not write unneeded registry keys if ClassName is empty.
* VersionIndependentProgID should not include version. * Also delete the "CurVer" registry key during un-registration to perform complete clean-up. git-svn-id: trunk@22657 -
This commit is contained in:
parent
91988e611a
commit
76dd6cfaac
@ -1023,43 +1023,47 @@ HKCR
|
||||
if Register then
|
||||
begin
|
||||
classidguid := GUIDToString(ClassID);
|
||||
CreateRegKey('CLSID\' + classidguid, '', Description);
|
||||
if ClassVersion <> '' then
|
||||
begin
|
||||
CreateRegKey('CLSID\' + classidguid + '\ProgID', '', ProgID + '.' + ClassVersion);
|
||||
CreateRegKey('CLSID\' + classidguid + '\VersionIndependentProgID', '', ProgID + '.' + ClassVersion);
|
||||
end
|
||||
else
|
||||
CreateRegKey('CLSID\' + classidguid + '\ProgID', '', ProgID);
|
||||
|
||||
CreateRegKey('CLSID\' + classidguid + '\InprocServer32', '', FComServer.ServerFileName);
|
||||
|
||||
//tmSingle, tmApartment, tmFree, tmBoth, tmNeutral
|
||||
CreateRegKey('CLSID\' + classidguid + '\InprocServer32', 'ThreadingModel', ThreadModelToString(ThreadingModel));
|
||||
|
||||
CreateRegKey(ProgID, '', Description);
|
||||
CreateRegKey(ProgID + '\CLSID', '', GUIDToString(ClassID));
|
||||
if ClassVersion <> '' then
|
||||
CreateRegKey('CLSID\' + classidguid, '', Description);
|
||||
if ClassName <> '' then
|
||||
begin
|
||||
CreateRegKey(ProgID + '\CurVer', '', ProgID + '.' + ClassVersion);
|
||||
CreateRegKey(ProgID + '.' + ClassVersion, '', Description);
|
||||
CreateRegKey(ProgID + '.' + ClassVersion + '\CLSID', '', GUIDToString(ClassID));
|
||||
end;
|
||||
if ClassVersion <> '' then
|
||||
begin
|
||||
CreateRegKey('CLSID\' + classidguid + '\ProgID', '', ProgID + '.' + ClassVersion);
|
||||
CreateRegKey('CLSID\' + classidguid + '\VersionIndependentProgID', '', ProgID);
|
||||
end
|
||||
else
|
||||
CreateRegKey('CLSID\' + classidguid + '\ProgID', '', ProgID);
|
||||
|
||||
CreateRegKey(ProgID, '', Description);
|
||||
CreateRegKey(ProgID + '\CLSID', '', GUIDToString(ClassID));
|
||||
if ClassVersion <> '' then
|
||||
begin
|
||||
CreateRegKey(ProgID + '\CurVer', '', ProgID + '.' + ClassVersion);
|
||||
CreateRegKey(ProgID + '.' + ClassVersion, '', Description);
|
||||
CreateRegKey(ProgID + '.' + ClassVersion + '\CLSID', '', GUIDToString(ClassID));
|
||||
end;
|
||||
end;
|
||||
end else
|
||||
begin
|
||||
classidguid := GUIDToString(ClassID);
|
||||
DeleteRegKey('CLSID\' + classidguid + '\InprocServer32');
|
||||
DeleteRegKey('CLSID\' + classidguid + '\VersionIndependentProgID');
|
||||
DeleteRegKey('CLSID\' + classidguid + '\ProgID');
|
||||
DeleteRegKey('CLSID\' + classidguid);
|
||||
DeleteRegKey(ProgID + '\CLSID');
|
||||
DeleteRegKey(ProgID);
|
||||
if ClassVersion <> '' then
|
||||
if ClassName <> '' then
|
||||
begin
|
||||
DeleteRegKey(ProgID + '.' + ClassVersion + '\CLSID');
|
||||
DeleteRegKey(ProgID + '.' + ClassVersion);
|
||||
DeleteRegKey('CLSID\' + classidguid + '\ProgID');
|
||||
DeleteRegKey(ProgID + '\CLSID');
|
||||
if ClassVersion <> '' then
|
||||
begin
|
||||
DeleteRegKey(ProgID + '\CurVer');
|
||||
DeleteRegKey(ProgID + '.' + ClassVersion + '\CLSID');
|
||||
DeleteRegKey(ProgID + '.' + ClassVersion);
|
||||
end;
|
||||
DeleteRegKey(ProgID);
|
||||
end;
|
||||
DeleteRegKey('CLSID\' + classidguid);
|
||||
end;
|
||||
{$ifdef DEBUG_COM}
|
||||
WriteLn('UpdateRegistry end');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user