1

现在我有一套用于 AutoCAD 的工具,可以部署给我们公司的用户。目前,它们正在通过我通过 Visual Studio 安装项目维护的 msi 进行部署。这些文件包括我们的一些自定义命令和 lisp 函数的 .NET dll,以及许多脚本、lisp、.pc3、.ctb 等文件。目前的安装方法是这样的:

在登录时,它会检查机器是否安装了工具或需要更新。如果它们没有安装,那么它会静默运行 msi。如果它们已安装但需要更新,则它会进行卸载,然后也静默安装。

当用户关闭 AutoCAD 时,它也会运行相同的方法,只是它通过系统托盘通知用户在更新完成之前不要重新打开 AutoCAD。

现在看来,登录或更新程序并不总是有效,因为我有用户因缺少组件而出现错误,而且它们似乎是随机发生的。我假设其中一个 msis 正在中断中间进程。

考虑到我需要能够即时更新(即告诉用户退出 AutoCAD 并重新进入以接收更新),有哪些替代方法可以更新我的 AutoCAD 插件?

4

2 回答 2

3

我们将 .Net dll 放在共享网络文件夹中。当用户启动 AutoCad 时,我们运行一个 LISP 例程来执行 dll 的“网络加载”。这样,如果我们想更新,我们只需重命名旧的 dll 并将新的 dll 放在共享网络位置。下次用户启动 AutoCad 时,他们将拥有最新的。您说您想即时更新并让用户知道,这是我们不必太担心的事情。如果我们担心,我们只需向 AutoCad 用户组发送一封电子邮件,告诉他们必须重新启动才能使最新更改生效。

这可能不是您正在寻找的,但希望它让您意识到可能的“不同”方法。

于 2010-11-05T14:05:09.947 回答
1

现在看来,登录或更新程序并不总是有效,因为我有用户因缺少组件而出现错误,而且它们似乎是随机发生的。我假设其中一个 msis 正在中断中间进程。

从表面上看,这表明用户没有在系统托盘中看到通知(可能太小了?)并且在安装完成之前启动了 AutoCAD。

简单化和/或严厉的建议......

  • 使用更明显的普通对话框,和/或
  • 在安装完成之前临时重命名 AutoCAD 可执行文件,例如acad.exe.save/或
  • 在安装过程中监视所有进程,如果 AutoCAD 启动立即终止所述进程;显示一个对话框,告诉用户它正在被关闭以及为什么,和/或
  • 将另一个模块添加到您的套件中,该模块会在安装完成后检查安装的彻底性,以便您立即了解问题,而不是等待用户偶然发现并稍后报告问题,和/或
  • 维护文件/版本/日期等的主列表,并拥有 AutoCAD 的启动套件,可能就像 S::Startup 中的自我诊断功能条目一样简单,检查当前配置/设置并将其与主列表进行比较,并相应地报告。

祝你好运,迈克尔。

编辑/ PS:直到我发布我的帖子才看到 JSprang 的帖子。总的来说,我认为他是一种优越的策略,与我们使用简单的 lisp 库所做的类似。

于 2010-11-05T14:16:28.957 回答