11

我在网络驱动器上的发布文件夹中有一组 ClickOnce 包,需要将它们全部移动到另一台服务器(我们的 DR 机器)。

复制/粘贴整个目录并在新机器上运行设置后,我收到一条错误消息,指出它找不到旧路径:

...MyClickOnceApp.application 的激活导致异常。检测到以下故障消息:

+ 下载文件://oldMachine/c$/MyClickOnceApp.application 没有成功。

+ 找不到路径“\\oldMachine\c$\MyClickOnceApp.application”的一部分。

一旦我将安装URL更改为指向我的新机器,我会收到另一个错误:

清单 XML 签名无效。

+ 对象的数字签名未经验证。

我尝试使用MageUI.exe来修改部署 URL,但它要求提供我没有的证书。

我做错了什么以及如何成功移动已发布的 ClickOnce 包?

4

4 回答 4

10

我找到了一个解决方案:

首先,使用 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 %2

REM 使用我们的密钥
法师签署清单 -Sign %1.application -CertFile C:\AppKey.pfx -Password myPw

我现在可以使用它以快速简便的方式运行我所有已发布的应用程序。我希望这有帮助。

于 2008-10-07T10:39:38.143 回答
8

无需过多详细说明,这应该可以让您继续前进。

出于安全原因,ClickOnce 清单必须使用证书进行签名。您可以购买代码签名证书或生成测试证书。测试证书的主要缺点是您的应用程序发布者将显示为“未知”而不是您公司的名称。

在 Visual Studio 中,打开项目的属性并转到“签名”选项卡,选择“签署 ClickOnce 清单”和“创建测试证书”。接下来,单击“更多详细信息”以弹出一个对话框,然后单击“安装证书”。这将引导您通过一个向导在您的商店中获取您的测试证书。确保将其放在“个人”商店中。

现在您可以使用 MageUI 来编辑您的清单。任何时候保存它都会提示您签署清单,但您现在应该能够选择刚刚存储的测试证书。始终在编辑/签署部署清单之前编辑/签署应用程序清单。这很令人困惑,因为应用程序清单不是扩展名为.application的文件。

祝你好运!

于 2008-10-06T16:53:30.590 回答
3

我希望必须执行以下操作:

  • 将当前文件夹内容复制到新位置
  • 对于每个应用程序:-
    • 将“安装文件夹”更改为新位置
    • 作为新版本发布
    • 将“发布文件夹”更改为新位置
    • 作为新版本发布

从新文件夹运行的新设置应该可以工作,现有的应该更新以查看正确的位置。

所有这些都未经测试,但我很确定这就是我之前所做的......

编辑:

显然,您必须在一定时间内并行运行它们,但由于它是一个内部应用程序,当您最终切换到新位置时最糟糕的情况是您必须通知用户获取“固定”应用程序的新位置

于 2008-10-06T15:41:07.117 回答
1

我相信你确实有证书。您需要一个来创建 ClickOnce 部署。Visual Studio 可能已经为您自动创建了一个自签名的。我对这个过程不太熟悉,希望有更明确答案的人会参与进来。另外,您是否尝试过 MageUI 工具,也许使用 GUI 需要做的事情会更明显。

于 2008-10-06T15:39:35.497 回答