3

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 の戻り値として使用できない理由を誰かが知っているかどうか疑問に思っていました。

4

1 に答える 1