Inno Setup est un bon programme d'installation facile à utiliser. Il est noté haut dans this stackoverflow question. J'ai besoin d'installer un plugin dans un dossier relatif au dossier d'installation d'une application tierce. Ce n'est pas évident de la part des docs comment faire cela.Comment utiliser Inno Setup pour installer un plugin/fichier dans un dossier basé sur une entrée de registre?
1
A
Répondre
4
Vous pouvez trouver la réponse à l'installation facultative d'un fichier en utilisant une entrée de registre dans la documentation et dans l'exemple de code, mais cela peut ne pas être évident. Voici quelques exemples de fragments de script utilisant un Adobe Premiere Plugin comme exemple:
les étapes clés sont les suivants:
1) utiliser la vérification: paramètre
2) Ecrire une fonction qui appelle RegQueryStringValue et analyser le chemin pour construire la destination du dossier plugin relatif
3) utiliser {code:} pour appeler une fonction pour retourner le dossier de destination
//
// 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;
Je ne suis pas un programmeur Pascal alors des suggestions sur la prise de GetPremiereDestination plus efficaces sont les bienvenus.