我使用Visual Studio 2010 C#编写了一个类库,用于读取计算机的硬件信息(例如HDD / SSD)。我将使用这个dll创建一个安装程序,使用InnoSetup读取目标计算机的硬件信息。现在我的问题是,除非已经注册,否则无法直接使用.NET dll。我正在尝试找到一种方法,在InnoSetup中的InitializeSetup期间注册dll,以便我可以使用dll中的函数。下面是我为安装程序编写的脚本。
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;
函数RegisterServer
似乎无法正常工作。它会抛出一个错误,其中写着RegSvr32 failed with exit code 0x4
。我在网上阅读了很多文章,它们都说应该使用regasm来注册.net dll。我真的不知道如何做到这一点,特别是在Inno Setup中。
请帮忙,谢谢。
{dotnet20}
对于3.5也可以正常工作。无论如何,非常感谢,这段代码真的帮了我大忙 :) - Nyerguds{code:StrStatusRegisterFiles}
作为StatusMsg
来注册 dll 文件的原始状态消息,然后使该函数使用result := SetupMessage(MsgStatusRegisterFiles);
从 [Messages] 获取原始的依赖于语言的安装程序字符串。 - Nyerguds