UAC提示符显示MSI的临时随机程序名称,可以显示正确的名称吗?
-
29-09-2019 - |
题
我正在构建用于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
)
不隶属于 StackOverflow