VSTO, Visual Studio, MVP
RSS 2.0 Feed
翻译
摘要:(原文 - Harry Miller:http://blogs.msdn.com/vsto/archive/2008/07/18/removing-customization-code-before-e-mailing-a-document.aspx)   为一个 Word / Excel 文档创建 VSTO 自定义代码之后,这个文档的后续拷贝也会和这些代码关联,哪怕你“另存为”的时候换一个文档名字,关联依然存在。每次文档被打开的时候,它就会试图去寻找关联的 VSTO 代码并且开始运行。问题来了:如果我们需要把文档发送给外部人员呢(比如客户、供应商)?他们没有权限访问到我们的内部网络,文档也就找不到关联的代码,于是一个讨厌的错误对话框就会跳出来,告诉一头雾水的用户“无法找到或加载自定义程序集”,对于普通 Office 用户来说,这简直就是天书一样的信息。   所以有时候我们需要在向外派发文档之前移除文档和 VSTO 代码的关联。   一个方法是手工在文档的“属性-高级属性-自定义”项目中删除“_AssemblyName”和“_AssemblyLocation”属性。   另外一种方法是通过编程,使用“ServerDocument.RemoveCustomization()”方法,可以解除文档和代码的关联。VSTO 文档中的示例程序包含了相关的代码可以参考。 相关资源: ServerDocument.RemoveCustomization 方法(2007 Office 系统) ServerDocument.RemoveCustomization 方法(2003 Office 系统) ServerDocument 示例代码 使用 ServerDocument 类在服务器上管理文档 ...[阅读全文]

posted @ | Feedback (0) | Filed Under [ VSTO 资源 翻译 ]

摘要:(原文 - Christin Boyd:http://blogs.msdn.com/vsto/archive/2008/08/15/visual-studio-2008-service-pack-1-released-now-what-christin-boyd.aspx)   恭喜恭喜!SP1 已经在微软网站上正式发布啦!   接下来呢?让我带大家看看 SP1 有些什么新玩意儿。我强烈建议大家浏览一下 SP1 Readme 文档里面关于 VSTO 的部分。如果你想知道这次的 Service Pack 修复了哪些 Bug,可以查阅这篇知识库文档。希望你曾经遇到的问题也在这次的更新中被修复了。   如果你想知道我们的团队是怎么决定添加哪些新功能到 SP1 里面去的,你可以参阅 VSTO 6月发布的 Blog《VS 2008 SP1 新特性以及 VSTO 团队是如何做出这些决定的》。   MSDN Library 更新了关于 Visual Studio Tools for Office 新功能的文档,包含了 SP1 新增的功能介绍。中文版本的文档也即将更新。 言归正传。 Visual Studio Tools for Office (2008 SP1) 新增特性 Visual Stduio 2008 Service Pack 1 (SP1) 包含了针对 Visual Studio Tools for Office 的更新。这次的更新列表在 Visual Studio 2008 功能特性文档中被分别列出,以便用户能快速查阅。本次更新包含了一些新的功能设计可以帮助开发者完成下列任务: 在加载项(Add-in)工程中添加宿主控件和智能标签   开发人员现在可以在应用程序层面的加载项工程中使用智能标签和宿主控件了。比如向 Word 2007 文档中动态添加内容控件(Content Control),向 Excel 2007 工作簿中动态添加列表对象(List Ojbect)。你可以像使用 Office 本地对象一样使用这些托管宿主控件,更好的是这些宿主控件还提供了事件和数据绑定的功能。   想要了解更多信息,请参阅:在运行时向 Office 文档添加控件、智能标签概览。 使用你的解决方案安装程序部署 Office 主互操作程序集(PIA)   现在,当你使用 ClickOnce 技术来部署 VSTO 解决方案时,Office 2007 主互操作程序集(PIA)会自动被添加为预安装项目。这些程序集会被自动复制到你的解决方案安装程序所在的那个目录里面。   想要了解更多信息,请参阅:如何在最终用户的电脑上部署预安装项目(2007 Office 系统)。 使用 .NET Framework 客户端配置快速部署你的解决方案   现在,你可以指定“.NET 框架客户端配置”作为你的目标 .NET 框架版本。这个精简版本的 .NET 框架不会安装所有的程序集,从而可以大大减少安装所需要的空间。   想要了解更多信息,请参阅:在 Visual Studio 中创建 Office 解决方案。 使用事件查看程序对安装过程进行排错   当你安装、卸载 VSTO 解决方案的时候,VSTO 运行时会将出错信息记录在 Windows 事件日志中,使用日志查看程序阅读这些信息,能有助于安装、部署解决方案过程中进行排错工作。   想要了解更多信息,请参阅:事件日志(2007......[阅读全文]

posted @ | Feedback (0) | Filed Under [ VSTO 资源 翻译 ]

摘要:(原作:Christin Boyd)   虽然 Visual Studio 2008 Service Pack 1 还没有完工,但是我们已经可以拿出一份 Beta 版的文档供大家阅读!从这个文档中您可以了解到今年晚些时候我们正式发布 SP1 的时候您可以看到哪些产品特性。   我建议大家先读一下文档,其中描述了一个全新的特性:开发者可以在 Word 和 Excel 的应用程序插件(Add-in)运行时直接扩展文档或者工作簿的功能。文档的地址: http://vs2008sp1docs.msdn.microsoft.com/en-us/ms334311.aspx   有了这个新特性,您可以在插件运行时动态向文档/工作簿添加下列对象并响应它们的事件: Host Controls ListObjects Smart Tags Word Content Controls 以及诸如“DocumentBeforeSave”之类的事件   从 Visual Studio 2008 Service Pack 1 开始,您可以在 Windows 系统的日志浏览器里面察看任何安装、卸载 VSTO 解决方案过程中由 VSTO 运行时报出的错误日志。利用这些日志记录,您就可以更加有效地解决安装部署过程中发生的问题。   这个 Service Pack 的测试版本目前只向大约一千个 Beta 测试者发布,他们都很善于提交明确的反馈意见和 Bug 报告。我希望这次管窥可以让您对今年炎夏将要发布的 SP1 先产生浓厚的兴趣。 ——Christin Boyd,Program Manager...[阅读全文]

posted @ | Feedback (0) | Filed Under [ VSTO 资源 翻译 ]

摘要:  注:本文原作者 Misha Shneerson 是 VSTO 团队的工程师。原文可以在下列地址找到:http://blogs.msdn.com/mshneer/archive/2007/09/05/deploying-your-vsto-add-in-to-all-users-part-ii.aspx。   在“上篇”中,我们介绍了准备知识。本文要把它付诸实用:如何在你的 Office 2007 插件安装程序中具体实现“部署到所有本机所有用户”,这包括任何安装程序都要处置的“安装”、“修复”和“删除”三大功能: 在安装插件的时候,我们需要写入一些类似“上篇”中“testpropagation_create.reg”文件的注册表键值,其中包含的“Create”指令会让 Office 把注册表键值复制到用户的 HKCU 里面去。 在卸载插件的时候,我们要把“Create”指令替换成“Delete”指令,让 Office 删除 HKCU 中对应的键值。同时,我们还需要把“Count”注册表值减少,这样可以保证 Office 要执行“Delete”指令。 在执行修复的时候,我们需要增加“Count”的值,这样会让 Office 再把 HKLM 里面的键值复制到 HKCU。   我们先来处理安装的时候需要用到的键值。最方便的方法莫过于修改一下现成的 VSTO 2005 SE 插件安装程序工程(创建插件工程时附带自动创建的安装程序工程)。就让我们来开一个新的 Excel 2007 插件工程好了,起个名字叫“MyAddIn”。你会发现 VSTO 自动帮你创建了一个配套的 MyAddInSetup 工程。打开这个工程,切换到注册表视图,然后把里面现成的注册表键值设置全部删除(比如那些在 HKEY_CURRENT_USER 里面的)。然后,把下面的注册表信息保存到一个 .reg 文件中,右键单击“Registry on Target Machine”节点,选择“导入(Import)……”,选中你刚才创建的 .reg 文件。这样就把我们需要的注册表信息导入安装程序工程了。如果有必要,你可以调整下面高亮显示的部分,以对应项目的实际情况。 Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\MyCompany.MyAddIn\Create\Software\Microsoft\Office\Excel\Addins\MyCompany.MyAddIn] "Description"="MyAddIn -- an addin created with VSTO technology""Manifest"="[TARGETDIR]MyAddIn.dll.manifest""FriendlyName"="MyAddIn""LoadBehavior"=dword:00000003"CommandLineSafe"=dword:00000001   做完这一步,你的注册表视图看起来应该类似于下图:   好了,这样一来,我们就可以保证在卸载 Add-In 的时候,相关的注册表键值会被正确删除。我还建议大家在属性窗口里面把“Create”节点的“DeleteOnUninstall”属性设置成 True,以此保证这个键值会在卸载的时候被删除。   请注意,我们还需要在“MyCompany.MyAddIn”节点增加一个“Count”值。但是不能通过“注册表视图”来加。因为我们不但需要在卸载的时候保留这个值,还要将其减小。如果在设计器里面添加,那就会在卸载的时候被删除了。   所以我们需要创建一个自定义安装动作(Custom Action),让它来改变 Count 的值,并且在卸载过程中创建一个“Delete”指令。   下面我将向大家展示 Darryn Lavery(促成本文的首要功臣)为他的 MSDN 专栏文章编写的代码(这篇即将发布的文章更加详尽地阐述了本文讨论的问题和解决方案),他无私地把代码与我共享,而我就借花献佛,拿来和大家分享。不过还是要感谢 Darryn。   现在我们就来仔细瞧瞧这个 Custom Action 的代码:先定义一个 RegisterOffice2007AddIn 类,添加一些私有方法。  class RegisterOffice2007AddIn {      #region private methods     private const string userSettingsLocation = @"Software\Microsoft\Office\12.0\User Settings";     public void IncrementCounter(RegistryKey......[阅读全文]

posted @ | Feedback (2) | Filed Under [ VSTO 资源 翻译 ]

摘要:  注:本文原作者 Misha Shneerson 是 VSTO 团队的工程师。原文可以在下列地址找到:http://blogs.msdn.com/mshneer/archive/2007/09/05/deploying-your-vsto-add-in-to-all-users-part-i.aspx。   VSTO 插件(也叫“托管代码 Office 插件”)在部署方面有一个严重的不足,简单来说,微软只告诉了我们如何把这些插件部署到单个用户环境;而“如何一次性部署到一台机器的所有用户环境中”成为了我们的阿喀琉斯之踵。本文将给告诉你如何解决这个问题。   首先让我们了解一些背景知识。   Office 2007 已经内置了对托管代码插件的支持,通过一个叫“Manifest”的注册表值,Office 应用程序可以区分传统的 COM 插件和托管代码插件。这个键值可以在下列位置找到:HKCU\Software\Microsoft\Office\<App>\AddIns\<AddInName>。   传统的 COM 插件可以通过在 HKLM\Software\Microsoft\Office\<App>\AddIns 注册自己的信息从而实现让本机所有的用户都可以使用。但是托管代码插件只能注册在 HKCU 里面,注册在 HKLM 里面的托管代码插件会被忽略。   要创建一个安装包,做到能够往启动安装程序的那个用户的注册表里面写入插件信息并不困难。但是,要把同样的信息复制到本机所有用户的注册表键里面,就需要比较高级的 Win32 API 使用技巧了。如果还要再稍微深入一步,我们可以让安装程序把插件注册信息写入“模板”(存在于 C:\Documents and Settings\Default User\ntuser.dat),这样可以保证将来使用本机的新用户直接就有相应的注册表信息。关于这种技巧,请参见 Raymond Chen 的文章。   已经在抓脑袋了?其实有一种相对来说容易得多的解决方案。诀窍就在于使用 Office 的一个内部机制,在用户启动 Office 应用程序的时候,把 HKLM 里面注册的信息复制到当前用户的 HKCU 里面去。   针对 Office 2007,这个神奇的键值就在这里:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings。如果你的电脑已经安装了 Office 2007,你可以打开注册表编辑器察看一下那里(如果是 x64 的操作系统,则应该在 Wow6432Node 的相应位置里面)。你会发现里面有不少看似随机的键,这些随机的键里面,又有“Create”以及“Delete”键;再进入一层看,就会发现里面似乎包含着某些完整路径的注册表信息!   我们所见到的就是 Office 2007 的一种 HKLM 到 HKCU 的信息复制机制,而这种机制可以在注册表中进行完全的控制。让我们来进一步研究这种机制到底是怎么工作的。我们可以先做一个小练习——把下面的内容复制到记事本程序,存为“testpropagation_create.reg”文件。然后运行这个文件,把其中的信息导入 HKLM。 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\TestPropagation]"Count"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\TestPropagation\Create\Software\Microsoft\Office\TestKey] "TestValue"="Test"   然后启动 Excel 2007,再检查一下注册表,你会发现你的 HKCU 中,有两个新的键值被创建出来了: HKCU\Software\Microsoft\Office\TestKey 有了一个值:TestValue HKCU\Software\Microsoft\Office\12.0\User Settings\TestPropagation 有一个 Count 值,并且等于 1   下一步,我们看看如何用同样的机制来删除键值。把下面的内容复制并保存到“testpropagation_delete.reg”文件,并且运行: Windows Registry Editor Version 5.00 [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\TestPropagation\Create][HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\TestPropagation] "Count"=dword:00000002[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\User Settings\TestPropagation\Delete\Software\Microsoft\Office\TestKey]   高亮显示的文字标明了和之前一个文件不同的地方。我们先移除之前创建的 TestPropagation\Create 键,注意前面的“-”符号,它表示删除键值。为了让指令正确执行,我们需要保证 HKLM 里面的 Count 值和 HKCU 里面的 Count 值不同,所以把 Count......[阅读全文]

posted @ | Feedback (4) | Filed Under [ VSTO 资源 翻译 ]