Msbuild .wixproj文件在生成期间不刷新属性
我刚刚实现了一个新的构建脚本文件,用于在项目之间共享代码签名详细信息,并允许我们根据主证书是否可用轻松切换。这是在我们的主要应用程序项目以及两个WiX项目(msi和exe)中Msbuild .wixproj文件在生成期间不刷新属性,msbuild,wix,wix3,Msbuild,Wix,Wix3,我刚刚实现了一个新的构建脚本文件,用于在项目之间共享代码签名详细信息,并允许我们根据主证书是否可用轻松切换。这是在我们的主要应用程序项目以及两个WiX项目(msi和exe)中 WiX似乎记住了上一次构建中的设置-例如,如果我在正确的位置使用cert.sign构建,然后将其删除并重新构建,它会在第一次构建期间调用从cert.sign加载的设置,而不是按预期使用test.sign。这不是常规.csproj文件中的问题 我设置的.sign文件(每个证书一个): 其中一个.wixproj文件(这不起作用
WiX似乎记住了上一次构建中的设置-例如,如果我在正确的位置使用
cert.sign
构建,然后将其删除并重新构建,它会在第一次构建期间调用从cert.sign
加载的设置,而不是按预期使用test.sign
。这不是常规.csproj
文件中的问题
我设置的.sign
文件(每个证书一个):
其中一个.wixproj
文件(这不起作用):
。。。
...
有没有办法解决这个问题?这可能是
SignMsi
和SignExe
目标中的问题吗?我使用的是Visual Studio 2015 u2,WiX v3.10.2.2516有什么不正常?尝试以更详细的方式运行构建—WiX似乎会记住上一次构建中的设置—例如,如果我在正确的位置使用cert.sign
进行构建,然后将其删除并再次构建,它会在第一次构建期间调用从cert.sign
加载的设置,而不是按照预期使用test.sign
。这不是常规.csproj
文件中的问题。(将很快更新问题)嗨,本,你找到解决办法了吗?据我所知,VS2015 u3、WiX 3.11中的漏洞仍未修复,目前还没有解决方案。到底是什么不起作用?尝试以更详细的方式运行构建—WiX似乎会记住上一次构建中的设置—例如,如果我在正确的位置使用cert.sign
进行构建,然后将其删除并再次构建,它会在第一次构建期间调用从cert.sign
加载的设置,而不是按照预期使用test.sign
。这不是常规.csproj
文件中的问题。(将很快更新问题)嗨,本,你找到解决办法了吗?据我所知,VS2015 u3、WiX 3.11中的漏洞仍未修复,目前尚无解决方案。
<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>
...
<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>
...
...
<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>
...