如何移动ClickOnce部署包
我在网络驱动器上的发布文件夹中有一组ClickOnce软件包,需要将它们全部移动到另一台服务器(我们的DR机器)。
复制/粘贴整个目录并在新机器上运行设置后,我收到一条错误消息,指出它无法找到旧路径:
激活… MyClickOnceApp.application导致exception。 检测到以下失败消息:
+正在下载文件://oldMachine/c$/MyClickOnceApp.application未成功。
+无法找到路径’\\ oldMachine \ c $ \ MyClickOnceApp.application’的一部分。
一旦我将安装URL更改为指向我的新计算机,我就会收到另一个错误:
清单XML签名无效。
+对象的数字签名未validation。
我已经尝试使用MageUI.exe修改部署URL,但它要求提供我没有的证书。
我做错了什么以及如何成功移动已发布的ClickOnce软件包?
我找到了解决方案:
首先,使用MageUI,我更改了“部署选项”下的“开始位置”。 在保存时,它促使我使用我在那里创建的密钥进行签名。 然后我运行了setup.exe
文件,它运行正常。
检查哪些文件发生了变化后,我意识到它只是一个文件:应用程序清单文件( myAppName.application
)。 文件中唯一发生变化的是部署提供程序和签名 (这是我在MageUI中更改的内容)。
一旦我意识到这是如何做到这一点,我使用了MageUI的命令行版本,名为Mage.exe
,它随SDK一起提供。
下面是我在命令行上创建的所有批处理文件:
REM设置环境
调用“C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ vcvarsall.bat”REM更新部署提供程序URL
mage -Update%1.application -pu%2REM使用我们的密钥签署清单
mage -Sign%1.application -CertFile C:\ AppKey.pfx -Password myPw
我现在可以使用它以快速简便的方式运行我所有已发布的应用程序。 我希望这有帮助。
没有太多的细节,这应该让你去。
出于安全原因,必须使用证书对ClickOnce清单进行签名。 您可以购买代码签名证书或生成测试证书。 测试证书的主要缺点是您的应用程序发布者将显示为“未知”而不是您公司的名称。
在Visual Studio中,打开项目的属性并转到“签名”选项卡,选择“签署ClickOnce清单”和“创建测试证书”。 接下来,单击“更多详细信息”以打开一个对话框,然后单击“安装证书”。 这将指导您完成向导以在您的商店中获取测试证书。 确保将其放入“个人”商店。
现在您可以使用MageUI编辑清单。 任何时候保存它都会提示您签署清单,但您现在应该可以选择刚刚存储的测试证书。 在编辑/签署部署清单之前,始终编辑/签署应用程序清单。 这很令人困惑,因为应用程序清单不是具有.application扩展名的文件。
祝好运!
我希望必须做到以下几点:
- 将当前文件夹内容复制到新位置
- 对于每个应用程序: –
- 将“安装文件夹”更改为新位置
- 发布为新版本
- 将“发布文件夹”更改为新位置
- 发布为新版本
从新文件夹运行的新设置应该工作,现有的设置应该更新以查找正确的位置。
所有这些都是未经测试的,但我很确定这就是我之前所做的……
编辑:
显然,你必须在一段时间内并行运行它们,但是因为它是一个内部应用程序,当你最终切换到新位置时最糟糕的情况是你必须通知用户获取“固定”应用的新位置
我相信你确实有证书。 您需要一个来创建ClickOnce部署。 Visual Studio可能已为您自动更新了自签名的一个。 我对这个过程并不太熟悉,希望有更明确答案的人能够参与其中。另外,如果你尝试过MageUI工具,也许使用GUI需要做的更明显。
- XDocument:是否可以强制加载格式错误的XML文件?
- IPAddress。 Parse解析192.168到192.0.0.168
- 使用IComparer而不是OrderBy对Dictionary进行排序
- 从C#调用Freebase Provider时,FSharp.Data’System.MissingMethodException’
- WinForms TabControl – 添加新标签按钮(+)
- 模拟“Windows”键和“+”键放大
- 今天,Visual Studio 2010中的unit testing有哪些首选选项?
- 如何在WCF Rest Service中创建JSON以匹配/序列化为DataContract
- 如何解决素数函数的Big-O表示法?