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

Sco*_*ham 53 windows uac certificate signtool

我正在构建Windows的MSI安装程序并使用signtool对安装程序进行签名.当我运行.msi进行测试时,UAC(用户帐户控制)提示出现,询问我是否要允许安装继续进行.没关系,但是提示显示了许多字段,而对于Program Name字段,它显示的内容类似于"403b3.msi".这不是我正在运行的msi的名称.

如何才能显示正确的程序名称?

Sco*_*ham 65

在执行signtool以对msi进行签名时,将/ d命令行参数与所需的程序名一起使用.

Windows安装程序似乎会创建msi文件的临时副本,并在运行之前为其分配生成的名称.如果你不使用/ d与signtool,你会看到对你的用户不是很有用的临时文件名.

  • 添加/ d时,还需要说明.IE:/ d"我的应用程序!" (4认同)

JJS*_*JJS 5

这是@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
)
Run Code Online (Sandbox Code Playgroud)