J'ai créé une DLL .NET à utiliser dans Openscript. Il installe essentiellement des certificats, supprime des certificats et vérifie si un certificat existe déjà. Ceci est ma méthode Exists:Utilisation de valeurs de retour booléennes dans une DLL .NET utilisée dans InstallScript
[ComVisible(true)]
public bool Exists(string thumbPrint)
{
try
{
...
//Check if the certificate exists on the store.
var certCollection = store.Certificates.Find(X509FindType.FindByThumbprint, thumbPrint, false);
return (certCollection.Count > 0);
}
catch (Exception exception)
{
...
}
}
C'est le code installscript
szDLLPath = SUPPORTDIR^"X509Framework.dll";
szClassName = "X509Framework.X509StoreProcessor";
DotNetUnloadAppDomain("X509FrameworkDomain");
try
set oX509Store = DotNetCoCreateObject(szDLLPath, szClassName, "X509FrameworkDomain");
catch
SprintfBox (INFORMATION, "Error","Error occured: %i\n\n%s\n\n%s", Err.Number, Err.Description, Err.LastDllError);
abort;
endcatch;
try
nReturn = oX509Store.Exists(FinArchCodeSigningSha);
catch
SprintfBox (INFORMATION, "Error","Error occured: %i\n\n%s\n\n%s", Err.Number, Err.Description, Err.LastDllError);
abort;
endcatch;
Dans cet exemple nReturn
est toujours -1
quand je debug dans InstallScript, si le certificat existe ou non. (bien sûr à partir d'un programme .NET cela fonctionne bien) Ensuite, j'ai essayé d'utiliser un int
comme valeur de retour et cela a fonctionné. Donc, il y a une solution de contournement.
Mais je me demandais si quelqu'un sait pourquoi je ne peux pas utiliser bool
comme valeur de retour pour une DLL .NET qui est utilisée dans Openscript.
Vous ne savez pas mais essayez simplement de renvoyer un entier à partir de la méthode 'Exists (string thumbPrint)'. Succès 0, sans succès -1 – PawanS
Merci pour l'indice GAPS. J'ai fait quelques tests avec les valeurs 'int' de retour de .NET et les attraper dans une variable' BOOL' dans InstallScript et cela a fonctionné. – Rubanov