MexicanCustard 发表于 2017-3-31 01:39:43

从服务器更新外接程序

如果需要,我将在以后的帖子中更详细地介绍,但附件是应该适用于2016年的项目,从下面的描述中,查看代码应该能够弄清楚它是如何工作的。这对我来说很有效,因为每个人都在获取最新的dlls、cuix等...在有本地服务器的环境中。
每个人都可以访问服务器,并使用相同的驱动器号进行映射。
对于安装刚刚发出的电子邮件链接到app.bundle文件夹复制和粘贴到他们的%appdata%\欧特克\Application ationPlugins。
用于开发的机器连接到服务器附件包含以下带有简短描述的文件夹,Server Folder-这是为了模仿服务器文件夹,您需要更改此文件夹的路径。
TheSwamp-这包含包含3个项目的解决方案。
TheSwampAddinLoader-这只是打开TheSwampAddinLoader.loadconfig文件以获取“UpdateDirectory”值,该值应该是TheSwampAddInLoaderData.loadData文件和所有需要复制或更新的文件所在的路径。
TheSwampAddin1-该项目的所有文件都首先被复制并覆盖,如果更新,则由TheSwampAddinLoader加载。
TheSwampAddin2-如果更新,则首先复制和覆盖该项目的所有文件,然后由TheSwampAddinLoader加载。
TheSwamp.AddinLoader.bundle这包含带有TheSwampAddinLoader.loadconfigfile的app.bundle文件夹,这是它的工作原理,TheSwamp.AddinLoader.bundle使用AutoLoader功能加载TheSwampAddinLoader.dll。
它在与TheSwampAddinLoader.dll相同的文件夹中查找TheSwampAddinLoader.loadconfig文件,该文件是带有“UpdateDirectory”的xml文件,位置为TheSwampAddInLoaderData.loadData文件。它将使用. loadata文件设置的参数将“UpdateDirectory”中的所有文件复制到TheSwamp.AddinLoader.bundle文件夹中,在附加的项目UpdateDirectory="%userprofile%\Documents\Visual Studio 2015\Projects\Server Folder\TheSwampApps\v20.1"中包含TheSwampAddInLoaderData.loadData文件和要复制的文件。
TheSwampAddInLoaderData.loadData文件告诉要复制的文件类型,是否应该复制子目录,以及要将哪些文件加载到AutoCAD中。下载并解压缩后如何让它工作,通过将“UpdateDirectory”的值更改为~\Server Folder\TheSwampApps\v20.1的位置来编辑~\TheSwamp.AddinLoader.bundle\Contents\Windows\2016\TheSwampAddinLoader.loadconfig文件。
将TheSwamp.AddinLoader.bundle文件夹复制并粘贴到%appdata%\欧特克\Application Plugins文件夹。
启动AutoCAD。
编辑TheSwampAddin1和/或TheSwampAddin2。
使用ServerRelise配置来构建项目(ServerReleass只是发布构建,输出文件夹设置为. loaddata文件的位置,因此它将dll和任何引用的dll放入要复制的文件夹中)。
关闭并启动AutoCADTheSwampAddinLoader.loadconfig

TheSwampAddInLoaderData.loadData

   TheSwampAddin1.dll
    TheSwampAddin2.dll   


**** Hidden Message *****

Atook 发表于 2017-3-31 08:00:38

干得漂亮 杰夫. 我一直在研究类似的东西,它使用FileSystemWatcher来查找文件夹更改,然后提示用户。如果用户选择更新,它会启动更新程序,并关闭 Autocad。 更新程序等待 Autocad 关闭并复制文件,然后再次启动 Autocad 并关闭。

pBe 发表于 2017-3-31 09:39:40

谢谢,
如果它是用于主流或商业应用程序,那么将需要像你得到的东西。

pBe 发表于 2017-3-31 13:52:48

很棒的东西,Jeff,感谢你张贴示例代码和解释。

pBe 发表于 2017-4-5 11:21:28

嗨,杰夫H,
伟大的代码,虽然有一个问题。我将 R20.1 更改为 19.0...
它适用于版本14,16和17,但不适用于Autocad 2015?是只有我,还是有其他需要改变的东西?
提前感谢您。
丙烯基橡胶

pBe 发表于 2017-4-5 12:06:17

我不确定我是否将我的文件分解到每年单独的文件夹中(同样,构建也有一个单独的“更新文件夹”),下面是我使用的未修改的文件。这在2015年行之有效,我看不出有什么需要改变的。我得到了2015年,今天晚些时候我会在这里用附带的例子来测试它。

       
       
               
               
       
       
               
               
       
       
               
               
                       
               
               
       

pBe 发表于 2017-4-5 12:13:10

感谢您的快速回复杰夫·一旦我回到工作中,我会尽快尝试这个。
啤酒时间到了

pBe 发表于 2017-4-6 06:00:33

我仍然不明白为什么插件跳过2015,它读取XML但不加载DLL。
是否可以尝试使用 ADN DevBlog 中附加的测试捆绑包。它可在除 2015 之外的所有版本上运行。
..
命令:RunMeFirst
Unknown 命令“RUNMEFIRST”。 按 F1 获取帮助。
..
而其余的有[ 14,16和17]

命令:RunMeFirst
Hello World
..
有什么想法吗?

pBe 发表于 2017-4-6 09:29:17

我以为我已经安装了2015年,但我必须卸载它。
对于2015年,我认为应该是
SeriesMin="R20.0" SeriesMax="R20.0"

Atook 发表于 2017-4-6 15:07:49

Jeff H,我在家里的计算机上安装了一个新版本的Autocad 2015,您知道吗,“THESWAMP”出现在功能区面板上。关闭2015,重启2015。它还在那里,然后我启动了Autocad 2017,它像预期的那样工作。耶!!!但是请等待..再次启动Autocad 2015...过去的...我得到的唯一提示是“嘟嘟”声    public void Initialize()。
{。
尝试一下。
{。
Loader load = new Loader();。
加载,load();。
}。
catch(异常)。
{。
控制台,beep();/// 。
扔;。
}。
你怎么看这件事?。
页: [1] 2
查看完整版本: 从服务器更新外接程序