使用 MSBuild 更新程序

Use MSBuild to Update a Program

我们使用 MSBuild 创建 Setup.exe。此 Setup.exe 将上传到服务器,程序使用此文件重新安装程序的新版本。我的任务是加快这个过程。

我想写一个编译exe的MSBuild。所以客户不需要下载整个 40mb,而是更新他的程序。

MSBuild 是否可行,或者是否有其他(更好的)解决方案。

我创建了补丁。

我只想简单回答一下。这可能是肤浅的。 因此,所有内容都是使用 build.msbuild 文件生成的。 使用程序的所有版本(1.0.0.0、1.0.1.0 等)创建文件夹。每个文件夹还包含一个 .wixpdb 文件。需要此文件来生成补丁。 我在 C# 中创建了一个 msbuild-Task 来自动生成补丁。看起来像这样:

…
foreach directory
…
if (!startTool("candle","\""+wurzel + "\Setup\MSI\Patch.wxs\" -o \""+wurzel+"\Setup\MSI\Patch.wixobj\""))
return false;
if (!startTool("light","\"" + wurzel + "\Setup\MSI\Patch.wixobj\" -o \"" + wurzel + "\Setup\MSI\Patch.wixmsp\""))
return false;
if (!startTool("torch", " -p -xi \"" + older.wixpdb + "\"  \"" + newer.wixpdb + "\" -out \"" + wurzel + "\Setup\MSI\Patch.wixmst\""))
return false;
if (!startTool("cmd", "/c cd /d \""+wurzel+"\Setup\MSI\" && pyro Patch.wixmsp -t MyPatch Patch.wixmst -out \"" + wurzel + "..\Release\Patches\Patch_" + kvp.Value + "-" + versionNrS + ".msp\""))
return false;
…

程序会自动下载正确的补丁并使用此命令进行安装:

"msiexec /qb /p " + fd.Directory.FullName + "\"+currentFtp.FileName + "  REINSTALL=ALL REINSTALLMODE=a”