常用于c++中的Registerserver=Yes,简单的调用regsvr32来注册的情况对C#没有用。
所以,我们需要使用代码来完成此工作。
在这里,我们主要解决如何创建CAB文件并布置到电脑上。为此,首先我们创建一个带COM接口的c#应用程序,以下是简单的示例:
using System;
using System.Text;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Runtime.InteropServices;
namespace DownloadedApp
{
[Guid("D1E40FCE-E964-4dfd-B07E-BDE49D3519A1")]
interface IDownload
{
void InvokeMethod();
}
///
/// COM exposed .NET class.
///
[ClassInterface(ClassInterfaceType.AutoDual)]
[Guid("A47C22B1-3CC3-45bc-801E-3FCC4FFD3E45")]
public class Download : IDownload
{
///
/// COM exposed .NET Method.
///
public void InvokeMethod()
{
MessageBox.Show("Clientside component invoked successfully!!",
"Clientside component", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}
}
现在创建一个MSI安装(Setup project),并将这个COM应用程序设置为项目输出(application folder->右击,->add->project output,在弹出的窗口中选择第一步创建的应用程序)。并将primary output from DownloadedApp(active)的register属性改为vsdrpCOM.
使用InetSDK CABARC工具,我们可以创建cab文件,并在CAB中包含downloadDeployer.msi和INF文件。这个工具可以从微软网站免费下载(http://support.microsoft.com/kb/310618)。
原文见:
http://www.codeproject.com/KB/cs/C__Deployment.aspx