Inno Setup - хороший простой в использовании установщик. Он высоко оценен в this stackoverflow question. Мне нужно установить плагин в папку по отношению к папке установки стороннего приложения. Из документов не очевидно, как это сделать.Как использовать Inno Setup для установки плагина/файла в папке на основе записи в реестре?
1
A
ответ
4
Вы можете найти ответ на возможность установки файла с помощью записи реестра в документации и в примере кода, но это может быть не так очевидно, поэтому здесь приведены примеры фрагментов сценария с использованием Adobe Premiere Plugin в качестве примера:
клавиши шаги:
1) использовать Check: параметр
2) Написать функцию, которая вызывает RegQueryStringValue и анализировать путь построить относительный Plugin папка_назначения
3) использовать {код}: для вызова функции для возврата в папку назначения
//
// Copy my plugin file to the Premiere Plugin folder, but only if Premiere is installed.
//
[Files]
Source: "C:\sourceFiles\myplugin.prm"; Check: GetPremierePluginDestination; DestDir: "{code:PluginDestination}"; Flags: ignoreversion overwritereadonly
[Code]
var sPluginDest : String;
//
// Search for the path where Premiere Pro was installed. Return true if path found.
// Set variable to plugin folder
//
function GetPremierePluginDestination(): Boolean;
var
i: Integer;
len: Integer;
begin
sPluginDest := '';
RegQueryStringValue(HKLM, 'SOFTWARE\Adobe\Premiere Pro\CurrentVersion', 'Plug-InsDir', sPluginDest);
len := Length(sPluginDest);
if len > 0 then
begin
i := len;
while sPluginDest[i] <> '\' do
begin
i := i-1;
end;
i := i+1;
Delete(sPluginDest, i, Len-i+1);
Insert('Common', sPluginDest, i);
end;
Result := len > 0;
end;
//
// Use this function to return path to install plugin
//
function PluginDestination(Param: String) : String;
begin
Result := sPluginDest;
end;
Я не программист Паскаль поэтому любые предложения по изготовлению более эффективной GetPremiereDestination приветствуются.