如何为Office 2007/2010和2013构建通用安装程序?
csproj文件有不同(有不同的主机包ID)
构建适用于Addins所有主机的公共插件的最佳方法是什么?
我尝试了以下内容 - 我在Visual Studio 2010中创建了2007年的插件应用程序。 我能够使用VS2010中的安装项目(msi)构建安装程序。它适用于outlook 2007和2010.(进行了注册表更改/文件设置)。
此链接很有用:http://msdn.microsoft.com/en-us/vsto/ff937654.aspx
使用Click one进行安装非常有用。由于我必须包含一些额外的文件。所以选择了自定义安装程序。
现在下一步是2013年。我在2013年使用了相同的安装程序。它崩溃了。我得到一个异常,表明堆栈溢出。
注意:我使用Visual Studio 2010为OUtlook 2007和2010使用C#开发了应用程序
答案 0 :(得分:1)
事实上,你在一个问题中提出了两个问题!这里答案:
如何为Office 2007/2010和2013构建通用安装程序?
这根本不是问题,不需要为每个版本的办公室安装不同的安装程序(如果你要进行每台机器设置,x86和x64办公室位数除外)。如果您为每个版本的办公室使用特定功能,则可以使用Application.Version在加载项代码中检查办公室版本。
构建一个适用于 Addins 所有主机的公共插件的最佳方法是什么?我认为你的意思是:最好的方法是什么.. 。 Office 的所有主机?您可以通过两种方式完成此任务:
通过创建共享加载项(不幸的是,自VS 2012以来已删除),
但是你仍然可以通过创建一个类来手动创建它
库项目,一旦创建,添加一个实现的类
Extensibility.IDTExtensibility2接口,如果您打算这样做
在你的插件中支持色带,然后实现
IRibbonExtensibility也是如此。另外,添加对Office.dll和的引用
Extensibility.dll。最后你应该有类似的东西
这样的:
[GuidAttribute(“1AF54C8F-6E33-44DE-9B4A-FF3801A51104”),ProgId(“MyAddin.Connect”)]
public class Connect : Object, Extensibility.IDTExtensibility2, IRibbonExtensibility
{
private object applicationObject;
private object addInInstance;
public Connect()
{
}
public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
{
applicationObject = application;
addInInstance = addInInst;
}
public void OnDisconnection(Extensibility.ext_DisconnectMode disconnectMode, ref System.Array custom)
{
}
public void OnAddInsUpdate(ref System.Array custom)
{
}
public void OnStartupComplete(ref System.Array custom)
{
}
public void OnBeginShutdown(ref System.Array custom)
{
}
public string GetCustomUI(string RibbonID)
{
StreamReader customUIReader = new System.IO.StreamReader(
@"APP\PATH\Ribbon.xml");
return customUIReader.ReadToEnd();
}
public void onMsoCommand(Office.IRibbonControl control, ref bool Cancel)
{
}
}
BTW ,这是我第一次回答SO,希望它有所帮助!