2010-09-17 78 views
4

我有一個MSBuild腳本,它構建我的Windows窗體應用程序,生成應用程序清單並對其進行簽名,然後生成部署清單。該腳本也爲我生成publish.htm文件。使用MSBuild從命令行生成ClickOnce部署setup.exe

現在我需要生成setup.exe文件,到目前爲止我還無法弄清楚VS如何生成它。我如何使用MSBuild腳本生成setup.exe文件?

非常感謝您的幫助!

+0

你的setup.exe有什麼變化,需要在每次構建時生成? – codeConcussion 2010-09-17 17:08:42

+0

我不一定會在每個版本中生成它。我打算將腳本重用於不同的應用程序,所以如果是新應用程序,我希望腳本生成設置。 – TheCee 2010-09-20 15:30:20

回答

2

您可以使用內置的GenerateBootstrapper MSBuild任務

當你從Visual Studio中發佈,這也是什麼的ClickOnce使用。

檢出C:\ Windows \ Microsoft.NET \ Framework \\ Microsoft.Common.Targets查看到底發生了什麼。

查看_DeploymentGenerateBootstrapper目標。

你CSHARP項目文件中包含一些項目和屬性,這一目標使用弄清楚:

  1. 如果它要產生一個引導程序(BootstrapperEnabled屬性)
  2. 的包生成引導程序(BootstrapperPackage項目組)
  3. 作爲軟件包將(BootstrapperComponentsLocation屬性)

希望這MAK安裝意義。通過一些工作,你可以用你的MSBuild文件實現你從Visual Studio發佈時的確切內容。

+0

謝謝,我會看看它。要解決這個問題,當我沒有迴應我的問題時,我複製了Visual Studio生成的文件在我的一個部署中並重新使用它。它似乎工作正常,但這個任務可能是我正在尋找的。即使它不能解決我的問題,它仍然是一個額外的任務:) – TheCee 2010-10-04 15:02:57

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的。