我刚刚发现我可以在 c# 中编写我需要的功能,然后将其作为一个 com 库在 inno setup 中调用它。下面是我正在玩的代码。
C#代码:
namespace SetupUtility
{
[Guid("BC45B534-C9E7-4C43-B57C-56B77C1C6CEE")]
public interface IMyClass
{
void WriteToFile(string filepath, string name, string orgName, string emailID);
}
[Guid("9AB25B08-FF74-4ADA-9A16-62ADB4603A56"),
ClassInterface(ClassInterfaceType.None)]
public class MyClass:IMyClass
{
public void WriteToFile(string filepath,string name, string orgName, string emailID)
{
try
{
string[] strings = { name, orgName, emailID };
File.WriteAllLines(filepath + "userDetails.txt", strings);
MessageBox.Show("File Written Successfully");
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.ToString());
}
}
}
}
下面是我努力编写的 pascal 脚本的摘录:
ExtractTemporaryFile('SetupUtility.dll');
Exec('{dotnet40}\regasm.exe','{tmp}\SetupUtility.dll', '', SW_SHOW,
ewWaitUntilTerminated, ResultCode);
obj := CreateOleObject('SetupUtility.MyClass');
obj.WriteToFile('{tmp}',ContactPerson, OrgName, Email);
代码编译得很好,但是当我运行设置时,我收到消息“类未注册”。错误来自哪里,可能的出路是什么?