UAC提示符显示msi的临时随机程序名称,可以显示正确的名称?

我正在为Windows创buildMSI安装程序并使用signtool签署安装程序。 当我运行.msi进行testing时,UAC(用户帐户控制)提示出现问我是否要继续安装。 这很好,但提示显示了一些字段,并且对于Program Name字段,它显示类似“403b3.msi”的内容。 这不是我正在运行的msi的名称。

我怎样才能得到正确的程序名称显示?

执行signtool签名msi时,使用/ d命令行参数与所需的程序名称。

看来,Windows安装程序会创build一个msi文件的临时副本,并在运行之前为其分配一个生成的名称。 如果你不使用/ d与signtool,你会看到临时文件名,这是不是非常有用的用户。

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

这是直接来自Visual Studio安装程序项目的PostBuildEvent – 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 )