He escrito una biblioteca de clase usando Visual Studio 2010 C# para leer información de hardware de una computadora (por ejemplo, HDD/SSD). Usaré este dll para crear un instalador usando InnoSetup para leer la información de hardware de la computadora de destino. Ahora mi problema es que .NET dll no se puede usar directamente a menos que ya esté registrado. Estoy tratando de encontrar una manera de registrar el dll durante InitializeSetup en InnoSetup para que pueda usar las funciones en el dll. Aquí está el script que escribí para el instalador.Cómo registrar una .NET DLL usando Inno Setup
function InitializeSetup(): Boolean;
var
obj: Variant;
diskPartitions: Integer;
va: String;
ErrorCode: Integer;
b: Boolean;
begin
ExtractTemporaryFile('SSHardwareChecker.dll');
RegisterServer(False, ExpandConstant('{tmp}\SSHardwareChecker.dll'), False);
obj := CreateOleObject('SSHardwareChecker.SSClass');
va := obj.GetDiskDriveInformation;
MsgBox(va, mbInformation, mb_Ok);
b:=UnregisterServer(False, ExpandConstant('{tmp}\SSHardwareChecker.dll'), False);
end;
La función RegisterServer
no parece work.It genera un error que dice RegSvr32 failed with exit code 0x4
. Leí muchos artículos en la red que dicen que .net dll debería registrarse usando regasm. Realmente no sé cómo hacer esto, especialmente en Inno Setup.
Por favor, ayuda chicos.
Tenga en cuenta que esto ocurre durante la instalación y, como tal, es demasiado tarde para que la DLL que se utilizará durante 'InitialiseSetup'. De lo contrario, es una solución válida para usar el DLL luego. – Deanna
¿Qué sucede si estás trabajando en Framework 3.5? No hay constantes para eso ... – Nyerguds
@Nyerguds Lo que supongo es que si estás trabajando en 3.5 deberías tener 2.0 también instalado con todos los ejecutables del núcleo. Espero que también sea parte del sistema operativo. –