乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 137|回复: 10

启动、更新和重新加载时禁用插件

[复制链接]

8

主题

30

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
62
发表于 2014-10-1 13:46:49 | 显示全部楼层 |阅读模式

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

8

主题

30

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
62
发表于 2014-10-1 13:57:09 | 显示全部楼层
谢谢你的链接杰夫。不确定我是否遵循代码片段,但会尝试和消化。所有最好的罗布泊。
回复

使用道具 举报

6

主题

145

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
169
发表于 2014-10-1 14:15:22 | 显示全部楼层

这完全取决于在 ComponentEntry XmlNodes 中加载的 ModuleName XmlAttribute 的值的性质。
FWIW - 对于那些试图在内部使用自动加载器的人来说,您遇到的问题并不少见,您只能为非只读的组件推送更新,无论您何时“推送”。
在会话启动时,自动加载程序机制会在启动序列中加载任何 Acad* 文件之前创建必要的注册表项,修改 SFSP,甚至加载已编译的程序集(.DLL无法卸载)...不过,LISP ComponentEntries仍然在AcadDoc.lsp之后加载。对于前者,您需要一种机制来评估是否存在较新的组件,如果能够重新加载,则需要这样做(例如ARX,CUIx等)。如果没有,则提示重新启动会话,或者如果依赖 NETLOGON 等来“推送”,则提示用户注销/打开。
有很多方法可以通知用户更新,可以包含在您的原始应用程序中,例如气泡,通知中心,警报(上帝禁止一千次!),任务对话框等...选择您认为最好的一个,以及您可以轻松使用的东西。
遗憾的是,到目前为止,Autoloader在非本地组件上的表现并不好(这是我多年来对Autodesk的要求)......你必须自己滚动。
一线希望是,Autodesk决心支持和增强Autoloader,特别是考虑到它在交付[第三方]Exchange应用程序方面对它造成了自我依赖。正如上面提到的2015 +的新自动加载器功能所证明的那样。
干杯
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2014-10-1 15:18:53 | 显示全部楼层

谢谢分享,杰夫;看起来很有趣。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2014-10-1 16:36:32 | 显示全部楼层
感谢BB的回复。
警报似乎是最简单的方法。
根据Jeff的描述,这似乎是一个理想的解决方案。我得好好想想。Robbo,祝你一切顺利。
回复

使用道具 举报

8

主题

30

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
62
发表于 2014-10-1 16:49:23 | 显示全部楼层
采取了一个相当简单的方法。添加了一个例程来启动lisp,将一个批处理文件的快捷方式复制到用户桌面来更新包。当bundle更新时,我在启动时设置了一个警告来通知用户更新。只需退出autocad并运行批处理文件。
回复

使用道具 举报

8

主题

30

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
62
发表于 2014-10-2 03:49:50 | 显示全部楼层
如果您想变得更有趣一点,您可以让BAT文件删除调用它的桌面快捷方式。如果你想多疑一点,你可以把相关的桌面AutoCAD快捷方式推到一个不碍事的文件夹,让更新蝙蝠在运行后把它们移回来。
回复

使用道具 举报

16

主题

506

帖子

6

银币

中流砥柱

Rank: 25

铜币
570
发表于 2014-10-5 13:32:49 | 显示全部楼层
PowerShell也可能提供做很多事情的能力,而实际代码很少......并且可以为用户提供“单击”更新的错觉。例如,无论您选择如何提示用户更新...现在,或者允许在严格的截止日期之前延迟更新...当用户选择气泡链接、对话框按钮等时,结果调用一个 PowerShell 脚本,该脚本使用 Get-Process 和 Stop-Process cmdlets:Get-Process Myprogram |Foreach-Object { $_.关闭主窗口() |空值 } |停止-过程-强制。
...使用 Get-ChildItem 和/或 Copy-Item cmdlet 执行所需的任何/所有更新(在小型等待事件之后?):Copy-Item \\ServerName\ShareName\YourAdminAppFolder -Destination $env:APPDATA\Autodesk\ApplicationPlugins\YourUserAppFolder -Recurse。
...然后使用 Invoke-Item 重新启动应用程序以启动桌面快捷方式:Invoke-Item $env:USERPROFILE\Desktop\YourUpdatedAppShortcut.lnk。
干杯。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2014-10-6 10:22:17 | 显示全部楼层

哇 - 此刻,这已经直接越过了我的头顶。
你是个多么聪明的家伙!
回复

使用道具 举报

8

主题

30

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
62
发表于 2014-10-6 11:39:21 | 显示全部楼层

我并不是想增加复杂性,而是试图提供一些可以简化(和加快)任务的东西。
诚然,我长期以来一直忽略了PowerShell,但考虑到我的新工作,我负责管理我们的整个环境(物理和虚拟服务器,Exchange [内部],Office 365,Autodesk产品等),我很快就开始欣赏我可以使用PowerShell所做的一切...我在Exchange和Office 365上的一些任务需要PowerShell,因为UI从一开始就只是一个有限的PowerShell界面。
举个简单的例子(不相关),上周我打算在城外呆一天,背靠背参加AutoCAD 2014和Civil 3D 2014专业认证考试,并且需要设置一个同事,以便能够安全地关闭服务器等,如果我作为手机缺席,会出现任何问题, 等在考试期间是不允许的(它在我的车里)...否则,我可以通过iPhone上的RDP自己完成...关键是,在几分钟内,我设置了一个PowerShell脚本,该脚本使任务实质上是使用停止计算机cmdlet(+/- 3秒)的双击操作,而不必手动关闭每台物理机(每台物理机位于办公室内的不同位置;他不擅长RDP,但这种方法甚至比RDP更快)。
无论如何,如果你选择组装一个工作版本,我想你会对结果非常满意。
干杯
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 03:26 , Processed in 0.369623 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表