Scripting 如何使用Inno Setup根据注册表项在文件夹中选择性地安装插件/文件?

Scripting 如何使用Inno Setup根据注册表项在文件夹中选择性地安装插件/文件?,scripting,registry,inno-setup,Scripting,Registry,Inno Setup,是一个很好的易于使用的安装程序。它的评级很高。我需要将插件安装到相对于第三方应用程序安装文件夹的文件夹中。从文档中看不清楚如何执行此操作。您可以在文档和示例代码中找到如何选择使用注册表项安装文件的答案,但可能不清楚,因此以下是一些使用Adobe Premiere插件的示例脚本片段: 关键步骤是: 1使用检查:参数 2编写一个调用RegQueryStringValue的函数,并解析路径以构造相对插件文件夹目标 3使用{code:}调用函数返回目标文件夹 // // Copy my plugin f

是一个很好的易于使用的安装程序。它的评级很高。我需要将插件安装到相对于第三方应用程序安装文件夹的文件夹中。从文档中看不清楚如何执行此操作。

您可以在文档和示例代码中找到如何选择使用注册表项安装文件的答案,但可能不清楚,因此以下是一些使用Adobe Premiere插件的示例脚本片段:

关键步骤是:

1使用检查:参数

2编写一个调用RegQueryStringValue的函数,并解析路径以构造相对插件文件夹目标

3使用{code:}调用函数返回目标文件夹

//
// 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;
我不是一个Pascal程序员,所以欢迎任何关于提高GetPremierDestination效率的建议