题
我在网络驱动器上的发布文件夹中有一组 ClickOnce 包,需要将它们全部移动到另一台服务器(我们的 DR 计算机)。
复制/粘贴整个目录并在新计算机上运行设置后,我收到一条错误消息,指出它找不到旧路径:
... myclickonceapp的激活导致例外。检测到以下故障消息:
+ 下载文件://oldMachine/c$/MyClickOnceApp.application 失败。
+ 找不到路径“\\oldMachine\c$\MyClickOnceApp.application”的一部分。
一旦我更改安装 网址 指向我的新机器,我收到另一个错误:
清单 XML 签名无效。
+ 对象的数字签名未验证。
我尝试过使用 MageUI.exe, ,修改部署 URL,但它要求提供证书,而我没有证书。
我做错了什么以及如何成功移动已发布的 ClickOnce 包?
解决方案
我找到了解决方案:
首先,使用MageUI,我改变了“开始位置”。在“部署选项”下。在保存时,它促使我使用我在那里创建的密钥进行签名。然后我运行了 setup.exe
文件,它运行正常。
在检查了哪些文件发生了变化之后,我意识到它只是一个文件:应用程序清单文件( myAppName.application
)。文件中唯一发生变化的是 部署提供程序 和 签名 (这是我在MageUI)。
一旦我意识到这是怎么做的,我就使用了SDK附带的名为 Mage.exe
的MageUI命令行版本。
下面是我在命令行上创建的所有批处理文件:
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需要做的更明显。