2008-10-06 47 views
9

我在网络驱动器的发布文件夹中有一个ClickOnce包的集合,并且需要将它们全部移到另一个服务器(我们的DR计算机)。如何移动ClickOnce部署包

后拷贝/粘贴整个目录和新的机器,我得到一个错误消息,指出它找不到旧的路径上运行的设置:有一次,我改变安装URL在指向

Activation of ...MyClickOnceApp.application resulted in exception. Following failure messages were detected:

+ Downloading file://oldMachine/c$/MyClickOnceApp.application did not succeed.

+ Could not find a part of the path '\\oldMachine\c$\MyClickOnceApp.application'.

我新机器,我得到另一个错误:

Manifest XML signature is not valid.

+ The digital signature of the object did not verify.

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

我在做什么错,我如何成功移动已发布的ClickOnce软件包?

回答

10

我找到了一个解决方案:

首先,利用MageUI,我改变了“开始位置”下的“部署选项”。在保存时,它促使我用我在那里创建的一个密钥签名。然后我运行了setup.exe文件,它的工作没有失败。

在检查哪些文件发生了变化后,我意识到它只是一个文件:应用程序清单文件(myAppName.application)。该文件中唯一改变的是在部署提供签名(这是我在MageUI改变)。

一旦我意识到如何做到这一点,我使用了SDK附带的名为Mage.exe的MageUI命令行版本。

下面是批处理文件,我创建做这一切的命令行:

REM Set the enviroment
call "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"

REM Update the deployment provider URL
mage -Update %1.application -pu %2

REM Sign the manifest with our key
mage -Sign %1.application -CertFile C:\AppKey.pfx -Password myPw

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

1

我相信你有证书。您需要一个来创建ClickOnce部署。 Visual Studio可能为你自动创建了一个自签名的文件。我对这个过程并不是很熟悉,希望有更明确的答案的人会参与其中。另外,你是否尝试过使用MageUI工具,或许它会更明显地需要使用GUI来做什么。

3

我希望有做到以下几点:

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

新设置运行在新的文件夹应该工作和现有的更新应该在正确的地方去寻找。

这一切是未经测试,但我敢肯定,这就是我以前一样...

编辑:

很明显,你必须运行这些并行一定量的时间,但因为它是一个内部应用程序,当您最终切换到新位置时会发生最糟糕的情况,那就是您必须通知用户新位置以获取“固定”应用程序

+0

这可以工作,但我发现它更明确地更改“更新路径”,然后发布文件夹。 – bouvard 2008-10-27 15:28:29

8

不要进入很详细,这应该让你去。

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

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

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

祝你好运!