点击一次-自动生成所需的所有构建
本文关键字:自动生成 构建 一次 | 更新日期: 2023-09-27 18:06:47
是否有一个脚本总是使所有已发布的构建都需要更新?无论如何,我都想对所有客户强制更新,但是,即使在使用ClickOnce部署API之后,也会询问他们是否想要更新。
您可以通过在项目的.csproj
文件中添加以下<target>
标记来实现。
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
// Other Tags ...
<Target Name="AutoSetMinimumRequiredVersion" BeforeTargets="GenerateDeploymentManifest">
<FormatVersion Version="$(ApplicationVersion)" Revision="$(ApplicationRevision)">
<Output PropertyName="MinimumRequiredVersion" TaskParameter="OutputVersion" />
</FormatVersion>
<FormatVersion Version="$(ApplicationVersion)" Revision="$(ApplicationRevision)">
<Output PropertyName="_DeploymentBuiltMinimumRequiredVersion" TaskParameter="OutputVersion" />
</FormatVersion>
</Target>
// Other Tags ...
</Project>
它会自动使你的每次发布/更新是强制性的,而不需要做任何额外的事情。
是的,您可以通过要求最小版本来强制所有客户升级。这样您就可以进行不兼容的服务器更改。
从MSDN:要将更新标记为必需的,请单击"指定最低要求"应用程序更新"对话框中此应用程序的版本,然后指定发布版本(主要,次要,构建,修订),哪个可以指定应用程序的最低版本号被安装。
我最终使用ClickOnce部署API,在那里我对过程有更多的控制。诀窍是将应用程序设置为100%脱机运行的CD-ROM应用程序。然后,使用简单的ClickOnce代码,可以执行静默更新。
private void Update()
{
try
{
ApplicationDeployment.CurrentDeployment.CheckForUpdateCompleted += new CheckForUpdateCompletedEventHandler(CurrentDeployment_CheckForUpdateCompleted);
ApplicationDeployment.CurrentDeployment.UpdateCompleted += new System.ComponentModel.AsyncCompletedEventHandler(CurrentDeployment_UpdateCompleted);
ApplicationDeployment.CurrentDeployment.CheckForUpdateAsync();
}
catch (Exception)
{
}
}
void CurrentDeployment_CheckForUpdateCompleted(object sender, CheckForUpdateCompletedEventArgs e)
{
try
{
if (e.UpdateAvailable)
{
ApplicationDeployment.CurrentDeployment.UpdateAsync();
}
}
catch (InvalidOperationException)
{
}
}
void CurrentDeployment_UpdateCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
//TODO: update completion code here
}