Instalar um certificado em uma ação personalizada do .MSI não funciona corretamente
Eu estou tentando instalar um certificado no armazenamento de computador local em uma ação personalizada. O certificado está instalado, mas quando eu o uso para consultar o AWS, recebo este erro:
Objeto contém apenas a metade pública de um par de chaves. Uma chave privada também deve ser fornecida.
O instalador está sendo executadoelevado, o alvo é o Windows Vista.
Se eu usar um .exe separado para instalar exatamente o mesmo certificado, usando exatamente o mesmo código, ele funciona. Então, o que é que difere ao instalar um certificado usando o Windows Installer?
O código:
private void InstallCertificate(string certificatePath, string certificatePassword)
{
if (IsAdmin())
{
try
{
X509Certificate2 cert = new X509Certificate2(certificatePath, certificatePassword,
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();
}
catch (Exception ex)
{
throw new DataException("Certificate appeared to load successfully but also seems to be null.", ex);
}
}
else
{
throw new Exception("Not enough priviliges to install certificate");
}
}