Hab mal fix eine Lösung für Inno Setup geschrieben. So würde es gehen:
[code=pre]
Code:
type
TExtensionExport =
record
Extension,
Name : string;
end;
procedure ExportRegistry;
var
ExportArray : array[1..2]of TExtensionExport;
i,
ECode : integer;
tmp : string;
begin
ExportArray[1].Extension := '.bat';
ExportArray[1].Name := 'batfile.reg';
ExportArray[2].Extension := '.cmd';
ExportArray[2].Name := 'cmdfile.reg';
for i := 1 to 2 do
begin
if(RegQueryStringValue(HKEY_CLASSES_ROOT,ExportArray[i].Extension,'',tmp)) and
(tmp <> '') then
begin
ShellExec('open',
'regedit.exe',
'/s /e "' + ExpandConstant('{app}') + '\' + ExportArray[i].Name + '" HKEY_CLASSES_ROOT\' + tmp,
'',
SW_SHOW,
ewWaitUntilTerminated,
ECode);
end;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if(CurPageId = wpInstalling) then
ExportRegistry;
end;
Leider ist die Pascal-Scriptsprache von Inno Setup noch nicht mit Delphi zu vergleichen. Das Array ließ sich daher nicht gleich bei der Deklaration mit Werten füllen. Und obwohl es laut Hilfe "Low" und "High" gibt, hat der Compiler in der Zeile
Code:
for i := Low(ExportArray) to High(ExportArray) do
gemeckert. Kann auch nur ein Schusselfehler von mir sein. Musst du mal gucken. Jedenfalls exportiert er die gewünschten Dateiendungen als REG-Datei in den Zielordner, den der User ausgewählt hat. Bezüglich der Funktion "CurPageChanged" würde ich dich an die Inno Setup-Hilfe verweisen. Die andere (ExportRegistry) ist eine selbstgeschriebene.