2017-07-07 274 views
1

我有一个wixproj创建一个MSI,引用一个csproj。 这是正在兴建的TeamCity,拥有多项构建步骤:如何在不重建引用项目的情况下使用wix构建msi?

  • 的NuGet安装
  • 构建的csproj(默认目标)
  • 运行signtool上内置的.exe
  • 构建wixproj(默认目标)
  • 上运行signtool内置的.msi

微星得到签名,但一旦安装,该.exe是没有的。

调查了这一点,事实证明,运行带有wixproj默认目标的msbuild会重新构建exe文件,覆盖已签名的文件。

我试图改变在wixproj构建步骤的目标,但“蜡烛”是未知的,“编译”与“未定义的预处理器变量‘$(var.App.TargetPath)’”

+0

你如何运行signtool来签署构建的exe文件?你可以把这个exe的签名作为一个setp在“AfterBuild”目标中吗? –

+0

我有一个运行'%SdkPath%\ signtool sign/a%WorkDir%\%Project%\ bin \%Configuration%\%Executable%'' 的构建步骤我宁愿避免将它放在项目文件中,因为它只与构建服务器有关,而不是在开发机器上。 –

回答

0

我发现的错误出为此感谢的解决方法, Build MSBuild target without dependencies

添加命令行选项/p:BuildProjectReferences=false固定我的问题构建步骤。

然而,生成日志现在给出了这样的通知:

MSBuild command line parameters contain "/property:" or "/p:". It is recommended to define System Property on Build Parameters instead.

但正如我不能添加设置了所有构建步骤,这不是我的选择。

相关问题