Installscript で使用する .NET dll を作成しました。基本的に、証明書をインストールし、証明書を削除し、証明書が既に存在するかどうかを確認します。これは私の Exists メソッドです:
[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)
{
...
}
}
これはインストールスクリプトのコードです
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;
この例では、証明書が存在するかどうかに関係なく、Installscript でデバッグするときnReturn
は常にです。(もちろん、.NETプログラムからは正常に動作します)次に、戻り値として-1
使用しようとしましたが、これは機能しました。int
したがって、回避策があります。
bool
しかし、Installscript で使用される .NET dll の戻り値として使用できない理由を誰かが知っているかどうか疑問に思っていました。