2

我们在 VS2010 中开发了一个 .Net 4.0 VSTO Excel 插件,我们正在通过 ClickOnce 进行部署。我们的可部署文件在 Windows XP 上似乎很好,但在 Windows 7 上安装时问题很大。这些问题似乎都与何时需要通过 Excel 删除插件有关(即它已被 Excel 软删除[例如,由于失败等) ],然后用户通过 Excel | Options | AddIns | Manage | COM AddIns 对话框将其“删除”。

上述情况会导致在发生上述情况后重新安装插件,它不会在 Excel 中公开 - 即 Excel 插件选项卡(如果安装了一个或多个插件,通常会出现)永远消失。当我们正在开发/调试时,它变得更加成问题,因为我们正在重命名/删除 AddIn 实例 - 以至于在 Windows 7 上开发 VSTO 不再可行

请注意,加载项不在硬删除(禁用)列表中 - 它已被删除。我尝试安装/重新安装/卸载、重新启动、删除注册表项(清理缓存/卸载后)、从 C:\Documents and Settings\\Local Settings\Apps\2.0 删除文件系统文件、清除缓存(通过mage 和/或 rundll32 根据Clear the .NET-downloaded application cache without Mage?)。XP 和 Windows 7 之间的行为似乎存在明显差异。

有没有人遇到过类似的问题?

我能看到的唯一替代方案是具有完全成熟的 MSI 的部署项目,但是这远不及整洁 - 需要本地管理员访问权限等

非常感谢
特拉维斯

4

3 回答 3

1

不确定您是否已阅读有关使用 Clickonce 发布 Office 解决方案的教程。如果你还没有,你可以通过下面的链接找到它们。值得阅读。

http://msdn.microsoft.com/en-us/library/vstudio/bb772100(v=vs.100).aspx
http://msdn.microsoft.com/en-us/library/vstudio/bb608591(v= vs.100).aspx

关于使用 windows 安装程序,这并不是很难做到,尤其是使用 Visual Studio 2010 安装项目。这是一个非常详细的教程,可以指导您完成所有这些。当我尝试部署 Excel 加载项时,它帮助了我很多,我希望它也能以某种方式帮助你。

http://msdn.microsoft.com/en-us/library/ff937654.aspx

此外,您可能想问自己这些问题,以确定使用 Clickonce/Windows 安装程序是否是正确的选择。

在选择部署技术时,您无需将自己限制在一个选项中。关键是为正确的工作选择正确的工具。虽然没有单一的规则或简单的答案,但您可以使用一些通用指南来帮助您针对您的特定需求做出最佳决策。

  • 应用程序是否安装任何 COM 组件?
  • 应用程序是否需要为 COM-Interop 注册任何组件?
  • 应用程序是否安装任何服务?应用程序是否必须安装到特定位置或全局程序集缓存 (GAC)?
  • 应用程序是否有任何基于操作系统或运行时环境有条件安装的组件?
  • 应用程序在安装时是否需要用户输入?
  • 应用程序是否需要配置系统级服务,例如 Active Directory 或 COM+?
  • 安装应用程序后,它是否会创建文件、写入注册表或以某种方式影响系统,从而在删除应用程序时留下资源?

如果您对其中任何一个问题的回答是肯定的,那么 Windows Installer 是满足您需求的最佳选择。但是,如果您不需要解决上面列表中描述的场景,那么 ClickOnce 是您的部署解决方案的理想选择。如果您想利用 ClickOnce 提供的独特优势,那么在应用程序设计过程的早期了解 ClickOnce 的功能至关重要。使用 ClickOnce 部署应用程序的早期版本,但后来才意识到需要迁移到 Windows Installer,这将创建一个困难的升级路径,可以通过仔细的前期规划来避免。

于 2013-03-25T06:50:36.610 回答
1

根据我的经验,在我的一个生产项目中,我们也使用了 MSI。并且避免了点击一次的问题。所以我的回答是——是的,你需要安装 MSI Project 或 MSI。通过 MSI 安装,您可以使用默认的 MSI 项目或外部的,例如 Wix 或 Wise Installer 或其他东西。使用自定义安装程序的第二种方式要困难得多。

对于删除的情况,我使用了缓存和注册表中的法师和手动删除加载项。它有帮助,但看起来像黑客。

此外,每次处理 VSTO ClickOnce 不清楚时,我都考虑过使用一些外部库。不幸的是,由于项目需要,我没有这样的机会使用第 3 方来简化我的工作。但是您可以检查并尝试。可能是Add-in-Express库会对您有所帮助,尤其是当它们有良好的技术支持时。

于 2013-03-24T17:03:29.527 回答
0

我们发现,让 ClickOnce 在 Windows 7 上为 VSTO 工作的方法是在 Excel 中执行此操作 - 即

  • 添加/删除程序:卸载
  • 电子表格 | 选项 | 插件 | 通讯 | 去
  • 添加 | 浏览到 ClickOnce setup.exe | 好的 | ETC
  • 关闭 Excel
  • 进入 Excel
  • 插件出现

我确定您可以使用添加/删除程序卸载(版本控制),因此用户不必手动卸载

ClickOnce 在工作时是 gr8 - 这是到达那里的旅程,需要加强大风格

于 2013-05-21T22:51:59.167 回答