Цитата Mafioza:
как ассоциировать файлы »
|
Смотри примеры в справке.
Делается примерно так
Ассоциация файлов
Пример 1
Код:

[Registry]
Root: HKLM; Subkey: "Software\Classes\.w3m"; ValueType: string; ValueName: ""; ValueData: "WorldEdit.Scenario"; Flags: uninsdeletevalue
Root: HKLM; Subkey: "Software\Classes\WorldEdit.Scenario\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\WorldEdit.exe,2"; Flags: uninsdeletevalue
Root: HKLM; Subkey: "Software\Classes\WorldEdit.Scenario\shell\open\command"; ValueType: string; ValueName: ""; ValueData: "{app}\World Editor.exe ""%1"""; Flags: uninsdeletevalue
Пример 2
Код:

[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
[Registry]
Root: HKLM; Subkey: SOFTWARE\Classes\.v64; Check: CheckOption(0)
Root: HKLM; Subkey: SOFTWARE\Classes\.z64; Check: CheckOption(1)
Root: HKLM; Subkey: SOFTWARE\Classes\MP64; ValueType: string; ValueData: My Program; Flags: uninsdeletekey
Root: HKLM; Subkey: SOFTWARE\Classes\MP64\DefaultIcon; ValueType: string; ValueData: {app}\MyProgram.exe,0
Root: HKLM; Subkey: SOFTWARE\Classes\MP64\shell\open\command; ValueType: string; ValueData: {app}\MyProgram.exe %1
[ Code]
var
Page: TInputOptionWizardPage;
procedure InitializeWizard();
begin
Page := CreateInputOptionPage(wpSelectTasks,
'Select File Extension Association', 'Which the file extension you would like to associate?',
'Select the file extension you would like to associate with My Program,'#13#10'then click Next.',
False, False);
{0} Page.Add('.v64');
{1} Page.Add('.z64');
Page.Values[0] := True;
end;
function CheckOption(OptionNum: integer): Boolean;
begin
Result:= Page.Values[OptionNum];
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpReady then
begin
WizardForm.ReadyMemo.Lines.Add('');
if Page.Values[1] or Page.Values[2] then
WizardForm.ReadyMemo.Lines.Add('File extension association:');
if Page.Values[1] then
WizardForm.ReadyMemo.Lines.Add(' .v64');
if Page.Values[2] then
WizardForm.ReadyMemo.Lines.Add(' .z64');
end;
end;
Пример 3
Код:

[Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
[Types]
Name: full; Description: Полная установка
Name: cu stom_clean; Description: Пользовательская установка; Flags: iscustom
[Components]
Name: main; Description: Основные компоненты; Types: full custom_clean; Flags: checkablealone
Name: main\ass; Description: Установить ассоциации:; Types: full custom_clean; Flags: checkablealone
Name: main\ass\ani; Description: .ani; Types: full custom_clean
[Registry]
Root: HKCU; Subkey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani; ValueType: string; ValueName: ; ValueData: ; Components: main\ass\ani
Root: HKCU; Subkey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani; ValueType: string; ValueName: ProgID; ValueData: IrfanView.ani; Flags: uninsdeletevalue uninsdeletekeyifempty; Components: main\ass\ani
[ Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
String: String;
begin
if (CurStep = ssInstall) and (IsComponentSelected('main\ass\ani') = False) then
if (ExpandConstant('{ reg:HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani,ProgID}') = 'IrfanView.ani') or
(ExpandConstant('{reg:HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani,ProgID}') = 'IrfanView.ANI') then
begin
RegDeleteValue(HKEY_CURRENT_ USER, 'Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani', 'ProgID')
if (RegQueryStringValue(HKEY_CURRENT_ USER, 'Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani', '', String)) and (String = '') then
RegDeleteValue(HKEY_CURRENT_ USER, 'Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani', '')
RegDeleteKeyIfEmpty(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ani')
end
end;
Первый пример можно так же ассоциировать не только через HKLM но и HKCU. Это уж по личному усмотрению, кому как удобно.
Вкратце:
HKLM - идёт как общая расчитана на всех пользователей, т.е при таком условии даже новый созданный юзер на компе автоматически ассоциируется с программой.
HKCU - В основном расчитана на одного пользователя, т.е при каком пользователе программа ассоциировалась то на нём и останется, на других зверей не повлеяет.