gpt4 book ai didi

msbuild - 如何发布包含 .net 安装程序和自动更新功能的 clickonce 安装程序?

转载 作者:行者123 更新时间:2023-12-04 12:22:38 26 4
gpt4 key购买 nike

我将 TeamCity 用于持续集成服务器,并使用 ClickOnce 安装程序部署我的应用程序。我可以让安装程序运行并部署我的应用程序,但我无法弄清楚如果计算机尚未安装 .net 4.5 的安装程序,或者如何在 ClickOnce 部署中启用自动更新检查功能。我目前正在使用下面的 MSBuild 文件来构建我的安装程序

<Project DefaultTargets="DoPublish" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
<PropertyGroup>
<Version>$(BUILD_NUMBER)</Version>
<Install>true</Install>
<InstallFrom>Unc</InstallFrom>
<UpdateEnabled>true</UpdateEnabled>
<UpdateMode>Background</UpdateMode>
<ClickOnceBuildDirectory>$(MSBuildProjectDirectory)\MyProject\bin\$(Configuration)\app.publish</ClickOnceBuildDirectory>
<ClickOnceInstallDirectory>$(MSBuildProjectDirectory)\Publish</ClickOnceInstallDirectory>
<ClickOnceFinalLocation>$(env_PublishUrl)</ClickOnceFinalLocation>
</PropertyGroup>
<Target Name="DoPublish">
<RemoveDir Directories="$(ClickOnceInstallDirectory)" ContinueOnError="true" />
<MSBuild Projects="MyProject.sln" Targets="Clean;Build" Properties="ApplicationVersion=$(Version);Configuration=$(Configuration)"/>
<MSBuild Projects="MyProject\MyProject.csproj" Targets="Publish" Properties="ApplicationVersion=$(Version);Configuration=$(Configuration);InstallUrl=$(ClickOnceFinalLocation)" />
<MakeDir Directories="$(ClickOnceInstallDirectory)"/>
<Exec Command="xcopy /E $(ClickOnceBuildDirectory) $(ClickOnceInstallDirectory)" />
</Target>
</Project>

最佳答案

您可以使用 bootstrap 来处理先决条件,例如检查 .NET Framework。检查 Application Deployment Prerequisites MSDN 文章,尤其是有关使用 ClickOnce 和 MSBuild 进行引导的部分。

还有 2 篇 MSDN 文章详细介绍了 how to install ClickOnce prerequisitesCreating bootstrapper packages .

至于自动更新,您是否希望在应用程序本身之外找到自动更新功能,即在安装程序中还是在应用程序中?有several ways to allow ClickOnce updates在您的应用程序中,包括 auto-updates via the ClickOnce Deployment API .

关于使用 ClickOnce Bootstrapper 包的简要说明可以在 this existing Stackoverflow article 中找到。 .虽然您在这里没有使用 WiX,但您也可以查看此 this WiX thread ,这很有用,因为您会看到一些在此过程中不起作用的步骤。这些示例显示了 GenerateBootstrapper MSBuild task 的使用为 ClickOnce 安装程序创建 bootstrap 。请注意,在上述链接的示例中,GenerateBootstrapper 任务中的“路径”设置为 Windows SDK 位置下的子文件夹。这可以更改为另一个位置,只要该位置具有必要的先决条件包。

下面是一个示例,其中将 .NET 4.5 Framework 设置为安装的先决条件。 .NET 4.5 先决条件的父目录结构由 $(MyPathToPrerequisitePackages) 属性指定。

bootstrap 文件 下面示例中的项目指定 .NET 4.5 Framework 先决条件包。值“.NETFramework,Version=v4.5”来自 Bootstrapper\Packages\DotNetFX45 文件夹中的 product.xml 文件,并允许 生成 bootstrap 正确识别 .NET 4.5 先决条件/ bootstrap 包的任务。 “ProductName”值只是对包的友好描述。

<PropertyGroup>
<MyPathToPrerequisitePackages>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper</MyPathToPrerequisitePackages>
</PropertyGroup>
<ItemGroup>
<BootstrapperFile Include=".NETFramework,Version=v4.5">
<ProductName>.NET Framework 4.5</ProductName>
</BootstrapperFile>
</ItemGroup>
<GenerateBootstrapper
ApplicationFile="$(MyAppAssembly).application"
ApplicationUrl="$(MyClickOnceAppUrl)"
ApplicationName="$(MyClickOnceAppName)"
BootstrapperItems="@(BootstrapperFile)"
Culture="en"
FallbackCulture="en-US"
CopyComponents="true"
Validate="false"
Path="$(MyPathToPrerequisitePackages)"
SupportUrl="$(MyAppSupportUrl)"
OutputPath="$(MyDesiredOutputPath)\" />

关于msbuild - 如何发布包含 .net 安装程序和自动更新功能的 clickonce 安装程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15121855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com