我正在构建用于Windows的MSI安装程序,并使用Signtool签名安装程序。当我运行.msi进行测试时,UAC(用户帐户控制)提示符显示,问我是否要允许安装继续进行。很好,但是提示显示了许多字段,对于程序名称字段,它显示了“ 403b3.msi”之类的字段。这不是我正在运行的MSI的名称。

如何获得要显示的正确程序名称?

有帮助吗?

解决方案

执行Signtool签名时,请使用 /D命令行参数和所需的程序名称。

看来Windows安装程序创建了MSI文件的临时副本,并在运行之前将其分配为生成的名称。如果您不使用 /D与Signtool一起使用,则可以看到对用户不太有用的临时文件名。

其他提示

这是 @Scott-Langham的评论的应用版本。

这直接来自Visual Studio安装程序项目-VDPROJ文件的后建筑。

set signtool="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\signtool.exe"
set timestampurl=http://timestamp.digicert.com
set certpath="$(ProjectDir)CodeSigningCert.pfx"

:: Setup in your user environment variables
:: using something with low sort order to force off screen ZZCODECERTPASSWORD
if []==[%ZZCODECERTPASSWORD%] (
echo must set code signing certificate in ZZCODECERTPASSWORD environment variable. stopping build.
exit /b 2
)

:: need the filename with extension that is being generated
FOR /f %%i IN ("$(BuiltOuputPath)") DO (
SET outputfilename=%%~nxi
)

%signtool% sign /t %timestampurl% /f %certpath% /p %CODECERTPW% /d %outputfilename% "$(BuiltOuputPath)"
IF ERRORLEVEL 1 (
echo failed to sign MSI
exit /b 3
)

%signtool% sign /t %timestampurl% /f %certpath% /p %CODECERTPW% "$(ProjectDir)$(Configuration)\Setup.exe"
IF ERRORLEVEL 1 (
echo failed to sign boostrap setup EXE
exit /b 4
)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top