使用Visual Studio 2012时,如何获得SignTool.exe的路径?
在Visual Studio 2010中,您可以使用
<Exec Command=""$(FrameworkSDKDir)bin\signtool.exe" sign /p ... />
Run Code Online (Sandbox Code Playgroud)
哪里$(FrameworkSDKDir)是
"c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\"
Run Code Online (Sandbox Code Playgroud)
但在Visual Studio 2012中,$(FrameworkSDKDir)是
"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\"
Run Code Online (Sandbox Code Playgroud)
和SignTool在
"c:\Program Files (x86)\Windows Kits\8.0\bin\x64\"
Run Code Online (Sandbox Code Playgroud)
有越来越路径不是硬编码等这个目录的方式(我试过FrameworkSDKDir和WindowsSDKDir,但都指向v8.0A目录).
我有一个项目,我已经构建了一个WiX msi文件.我还有一个WiX引导程序(exe文件),它检查是否存在C++ 2005,如果找不到则安装它,然后安装msi软件包.我的项目包括Crystal Reports作为msm文件,它与msi一起安装但需要C++ 2005才能正确安装.
在MSI项目中,我已经包含以下post构建事件来对msi文件进行数字签名.
sign /f "$(ProjectDir)\myPFXFile.pfx" /p mySecretKey/d "My Program" /t http://timestamp.verisign.com/scripts/timstamp.dll /v "MyProgram.msi"
Run Code Online (Sandbox Code Playgroud)
如果我只安装msi,它会在请求提升的安装权限时正确识别发布者.
我尝试将相同的post-build事件添加到bootstrapper项目,如下所示:
sign /f "$(ProjectDir)\myPFXFile.pfx" /p mySecretKey/d "My Program" /t http://timestamp.verisign.com/scripts/timstamp.dll /v "MyProgram Setup.exe"
Run Code Online (Sandbox Code Playgroud)
当我尝试安装exe文件时,它正确识别发布者,但无法使用日志文件中的以下内容进行安装:
[1604:2574][2013-12-04T11:49:51]i001: Burn v3.7.1224.0, Windows v6.2 (Build 9200: Service Pack 0), path: C:\Users\.....\MyProgram Setup.exe, cmdline: ''
[1604:2574][2013-12-04T11:49:51]i000: Setting string variable 'WixBundleLog' to value 'C:\Users\.....\MyProgram_20131204114951.log'
[1604:2574][2013-12-04T11:49:51]i000: Setting string variable 'WixBundleOriginalSource' to value 'C:\Users\.....\MyProgram Setup.exe'
[1604:2574][2013-12-04T11:49:51]i000: Setting string variable 'WixBundleName' to value 'MyProgram'
[1604:2574][2013-12-04T11:49:51]i100: Detect begin, 2 packages
[1604:2574][2013-12-04T11:49:51]i000: Setting string …Run Code Online (Sandbox Code Playgroud)