使用MSBuild从命令行为ClickOnce部署生成setup.exe

时间:2010-09-17 13:38:40

标签: msbuild clickonce

我有一个MSBuild脚本,用于构建我的Windows窗体应用程序,生成应用程序清单并对其进行签名,然后生成部署清单。该脚本还为我生成了publish.htm文件。

现在我需要生成setup.exe文件,到目前为止我还无法弄清楚VS如何生成它。如何使用MSBuild脚本生成setup.exe文件?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您可以使用内置的GenerateBootstrapper MSBuild任务

当您从Visual Studio执行发布时,这也是ClickOnce使用的内容。

查看C:\ Windows \ Microsoft.NET \ Framework \\ Microsoft.Common.Targets以查看到底发生了什么。

查看_DeploymentGenerateBootstrapper目标。

您的CSharp项目文件包含此目标用于确定的一些项目和属性:

  1. 如果要生成引导程序(BootstrapperEnabled属性)
  2. 为(BootstrapperPackage项目组)生成引导程序的程序包
  3. 将从(BootstrapperComponentsLocation属性)
  4. 安装软件包的位置

    希望这是有道理的。通过一些工作,您可以使用MSBuild文件实现从Visual Studio发布时所发生的事情。

答案 1 :(得分:1)

您想要msbuild的标志是:

/target:publish

/p:PublishDir=C:\Foo\

请注意,必须在发布目录上有一个尾随\,或者它只是简单地执行发布(即构建)的相关步骤,而从不实际生成安装程序。

您可能对msbuild npm包感兴趣:

var msbuild = require('msbuild');
var path = require('path');

// Config
var source = 'source/Bar/Bar.App/Bar.App.csproj';
var deploy = path.join(__dirname, 'deploy');

// Build the project
var builder = new msbuild();
builder.sourcePath = source;
builder.overrideParams.push('/p:PublishDir=' + deploy + "\\"); // <-- Installer
builder.overrideParams.push('/Target:rebuild;publish');
builder.overrideParams.push('/P:Configuration=Release');
builder.overrideParams.push('/P:verbosity=diag');
builder.overrideParams.push('/P:Platform=x86');
builder.overrideParams.push('/fl');
builder.overrideParams.push('/flp:logfile=build.log;verbosity=diagnostic');
builder.publish();

...你可以运行类似的东西:

npm install msbuild
node builder.js

不需要powershell。