我剛剛發現我可以在c#中編寫我需要的功能,然後使其成爲一個com庫以在inno setup中調用它。以下是我正在玩的代碼。如何在運行inno setup時註冊在c#中創建的com類
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);
的代碼編譯罰款,但當我運行安裝程序時,我收到消息「類未註冊」。錯誤來自哪裏以及可能的出路是什麼?
您是否確認可以通過其編譯機器上的COM客戶端創建這些類?您可能還需要'/ codebase'參數。 – Deanna 2013-03-18 10:37:49
什麼都沒有跳出來,一個位的問題並不能解釋它。使用SysInternals的ProcMon實用工具找出缺少什麼註冊表項。並確保你有一個regasm.exe實際執行的最低保證。 – 2013-03-18 13:13:40