【问题标题】:Error URL for Prerrequisites Setup.exe Click Once VS 2008先决条件 Setup.exe Clickonce VS 2008 的错误 URL
【发布时间】:2010-02-02 15:30:57
【问题描述】:

我有这个问题:

我正在使用 VS 2008 Team Suite,并且我有 WinForms csproj。我想使用 ClickOnce 发布它。

在 csproj 的发布属性中,我有这些值:

发布文件夹位置(网站, ftp 服务器或文件路径): C:\ClickOnce\Frk.Security.CarWin.WebInstall\Publicacion\

安装文件夹 URL(如果不同 比上面): http://CHANGETHESERVER/carwinclickonce/Publicacion/

发布版本:1.0.0.0

先决条件:Windows 安装程序 3.1, .NET 35.sp1

现在,我发布了,一切正常。我需要将我的应用程序部署到多台机器(开发、预生产、生产环境...),并且我使用 Msbuild...

<Microsoft.Sdc.Tasks.Folder.CopyFolder
    Source="Publicacion"
    Destination="$(Directorio_Destination)\Publicacion" />

我将C:\ClickOnce\Frk.Security.CarWin.WebInstall\Publicacion\ 复制到另一台机器的文件夹中(此文件夹是网站的根目录)

\\desiis\c$\Webs\carwinclickonce\Publicacion\ 

(http://desiis/carwinclickonce/Publicacion/)

我像这样使用 MSBUILD 和 Mage;变量 $(ProviderUrl) = http://desiis/carwinclickonce/Publicacion/

<Target Name="PublishClickOnce">
    <Exec Command="$(Mage) -u $(PublishDir)\Frk.Security.CarWin.application -pu $(ProviderUrl)" />

    <Exec Command="$(Mage) -u $(PublishDir)\Frk.Security.CarWin.application -cf $(CertDir)\Frk.Security.CarWin_TemporaryKey.pfx" />
  </Target>

现在,我的 publish.htm 位于 http://desiis/carwinclickonce/Publicacion/publish.htm

有两个安装应用程序的链接: 1.)http://desiis/Carwinclickonce/Publicacion/Frk.Security.CarWin.application

这个选项一切正常。

  1. ) http://desiis/Carwinclickonce/Publicacion/Setup.exe

此选项出错!

错误如下:

错误的意图描述 'http://CHANGETHESERVER/carwinclickonce/Publicacion/Frk.Security.CarWin.application'。 (尝试下载失败 'http....Frk.Security.CarWin.application')

Vea el archivo de registro de la instalación que se encuentra en 'C:\DOCUME~1\xxxxxx\CONFIG~1\Temp\VSD5B7.tmp\install.log' 更多信息。

install.log 内容:

以下属性已被 设置:属性:[AdminUser] = true {boolean} 属性: [处理器架构] = 英特尔 {string} 属性:[VersionNT] = 5.1.3 {version} 运行包检查 'Windows Installer 3.1',阶段

BuildList 以下属性 已为包“Windows”设置 安装程序 3.1':运行检查 命令 'WindowsInstaller3_1\WindowsInstaller-KB893803-v2-x86.exe' 运行运算符的结果 'VersionGreaterThanOrEqualTo' on 属性“VersionMsi”和值“3.1”: true 命令检查的结果 'WindowsInstaller3_1\WindowsInstaller-KB893803-v2-x86.exe' 是“绕过”“Windows Installer 3.1” RunCheck 结果:无需安装

启动应用程序。 URLDownloadToCacheFile 失败 HRESULT '-2146697211' 错误:错误 al 意图去卡 'http://CHANGETHESERVER/carwinclickonce/Publicacion/Frk.Security.CarWin.application'。 (尝试下载失败 'http....Frk.Security.CarWin.application')

有什么想法吗?我可以使用 Mage.exe 命令吗?如何修改 setup.exe?

更新:

使用 msbuild 来使用 setup -url=http://desiis/....

<Exec Command="$(PublishDir)\setup -url=$(ProviderUrl)" />

另一个问题是,使用/url开关更改URL后,会出现一个消息框,用于手动确认签名对程序集无效。

  1. 如何在静默模式下使用 setup -url=http://....?
  2. 如何重新签署 setup.exe?

我的 msbuild

<Target Name="PublishClickOnce">

<Exec Command="$(PublishDir)\setup -url=$(ProviderUrl)" /> 
<Exec Command="$(Mage) -u $(PublishDir)\Frk.Security.CarWin.application -pu $(ProviderUrl)" /> 
<Exec Command="$(Mage) -u $(PublishDir)\Frk.Security.CarWin.application -cf $(CertDir)\Frk.Security.CarWin_TemporaryKey.pfx" /> 

</Target>

【问题讨论】:

    标签: msbuild clickonce installation publish bootstrapper


    【解决方案1】:

    为了澄清,ClickOnce 有效。您的问题在于 Visual Studio 为安装先决条件而生成的 setup.exe 引导程序文件。您使用虚假的服务器名称 (CHANGETHESERVER) 并稍后根据您部署到的服务器进行更改。可以轻松更改 .application 文件的服务器名称,但您不确定如何修复 setup.exe 文件,因为它会在安装前提条件后尝试启动 http://CHANGETHESERVER/...。这一切都正确吗?

    我不确定如何更新您的 setup.exe 文件以指向正确的 url。但是,我不担心更新它。我会去 Visual Studio,将“CHANGETHESERVER”更改为实际服务器(如您的开发服务器),然后发布。生成的 setup.exe 将适用于您使用的服务器。保留该 .exe 的副本,然后为您的其他服务器(QA、生产等)再次执行该过程。将特定于服务器的文件部署到每台服务器,就大功告成了。

    除非您添加/删除先决条件,否则 setup.exe 文件不会更改。无需在每次部署时都生成和部署新的。

    【讨论】:

    • 没错。 MrRobinDotnet 说我: setup -url= --> 改变它指向的 url。我使用 msbuild 来执行命令 =“$(PublishDir)\setup -url=$(ProviderUrl)”。另一个问题是,在使用 /url 开关更改 URL 后,会出现手动确认签名对程序集无效的消息。更多信息,这里social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/… 谢谢!!!
    • 两个问题:1.如何在静音模式下使用setup -url=http://....?我不希望出现确认消息。 2. 如何重新签名setup.exe??我的 msbuild 适用于 Target Name="PublishClickOnce" 1. Exec Command="$(PublishDir)\setup -url=$(ProviderUrl)" 2. Exec Command="$(Mage) -u $(PublishDir)\Frk.Security .CarWin.application -pu $(ProviderUrl)" 3. 执行命令="$(Mage) -u $(PublishDir)\Frk.Security.CarWin.application -cf $(CertDir)\Frk.Security.CarWin_TemporaryKey.pfx"
    • 我不知道如何使用“setup -url=" 命令。我是说你应该只为每个环境生成一个 setup.exe 一次。 setup.exe 不会更改,因此无需继续创建和部署它。
    • 我想为所有环境生成一次 setup.exe,而不是为每个环境生成一次。只有我想使用 msbuild 自动化任务来更改设置中的 url。这是一个错误,connect.microsoft.com/VisualStudio/feedback/…,但我认为还没有解决方案。关于它的更多信息?谢谢。
    【解决方案2】:

    更新:

    现在,发布并一切就绪。我需要在多台机器(开发、预生产、生产环境...)上部署我的 Publish,并且我使用 Msbuild。

    然后,使用 MSBUILD

     <Microsoft.Sdc.Tasks.Folder.CopyFolder Source="Publicacion" Destination="$(Directorio_Destination)\Publicacion" />
    

    我将 C:\ClickOnce\Frk.Security.CarWin.WebInstall\Publicacion\ 复制到另一台机器的文件夹中(此文件夹是网站的根目录)

    \desiis\c$\Webs\carwinclickonce\Publicacion\

    (http://desiis/carwinclickonce/Publicacion/)

    我像这样使用 MSBUILD 和 Mage;变量 $(ProviderUrl) = http://desiis/carwinclickonce/Publicacion/

    <Target Name="PublishClickOnce">
        <Exec Command="$(Mage) -u $(PublishDir)\Frk.Security.CarWin.application -pu $(ProviderUrl)" />
    
        <Exec Command="$(Mage) -u $(PublishDir)\Frk.Security.CarWin.application -cf $(CertDir)\Frk.Security.CarWin_TemporaryKey.pfx" />
      </Target>
    

    【讨论】:

    • 编辑您的原始问题,而不是添加帖子。假设新帖子是问题的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    相关资源
    最近更新 更多