.wixproj文件在构建期间不刷新属性

时间:2016-04-07 12:44:00

标签: msbuild wix wix3

我刚刚实施了一个新的构建脚本文件,以便在项目之间共享代码签名详细信息,并允许我们根据我们的主证书是否可用轻松切换。这是我们的主要应用项目以及两个WiX项目(msi和exe)。

似乎WiX会记住上一次构建中的设置 - 例如,如果我在正确的位置使用cert.sign进行构建,然后将其删除并再次构建,则会重新调用从cert.sign加载的设置第一次构建而不是按预期使用test.sign。这不是常规.csproj文件中的问题。

我设置的.sign文件(每个证书一个):

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Certificate>test.pfx</Certificate>
    <FilePath>$(SolutionDir)</FilePath>
    <Pwd>cert_pwd</Pwd>
    <TimeStamp>/tr http://timestamp.server.com</TimeStamp>
    <AppName>My App</AppName>
    <Url>www.example.com</Url>
  </PropertyGroup>
</Project>

.csproj文件(可行):

...
<Import Project="$(SolutionDir)..\..\.cert\cert.sign" Condition="Exists('$(SolutionDir)..\..\.cert\cert.sign')"/>
<Import Project="$(SolutionDir)\test.sign" Condition="!Exists('$(SolutionDir)..\..\.cert\cert.sign')"/>
<PropertyGroup>
  <PostBuildEvent>signtool sign /f $(FilePath)$(Certificate) /p $(Pwd) $(TimeStamp) /d $(AppName) /du $(Url) $(TargetPath)</PostBuildEvent>
</PropertyGroup>
...

其中一个.wixproj个文件(这不起作用):

...
<Import Project="$(SolutionDir)..\..\.cert\cert.sign" Condition="Exists('$(SolutionDir)..\..\.cert\cert.sign')"/>
<Import Project="$(SolutionDir)\test.sign" Condition="!Exists('$(SolutionDir)..\..\.cert\cert.sign')"/>
<Target Name="SignMsi">
  <Exec Command="signtool sign /f $(FilePath)$(Certificate) /p $(Pwd) $(TimeStamp) /d $(AppName) /du $(Url) @(SignMsi)" />
</Target>
...

有关如何解决此问题的任何想法?这可能是SignMsiSignExe目标中的问题吗?我在Visual Studio 2015 u2,WiX v3.10.2.2516

0 个答案:

没有答案