2

我有这个麻烦:

我正在使用 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 Installer 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>

现在,我在http://desiis/carwinclickonce/Publicacion/publish.htm中有我的 publish.htm 。

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

此选项一切正常。

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

此选项出错!

错误如下:

错误 al intentar descargar ' 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} 属性:[ProcessorArchitecture] = Intel {string} 属性:[VersionNT] = 5.1.3 {version} 运行检查包“Windows Installer 3.1”,阶段

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

启动应用程序。URLDownloadToCacheFile 失败并出现 HRESULT '-2146697211' 错误:错误的意图 decargar ' 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>
4

2 回答 2

1

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

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

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

于 2010-02-03T14:10:35.733 回答
0

更新:

现在,Publish and All 已经完成了。我需要在多台机器(开发、预生产、生产环境......)上部署我的发布,并且我使用 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>
于 2010-02-02T18:30:26.253 回答