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

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

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

2 Solutions collect form web for “UAC提示符显示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 ) 
  • 检测是否以pipe理员身份运行,是否具有提升的权限?
  • 无法以pipe理员身份访问PowerShell中的networking驱动器
  • 如何自动提升我的batch file,以便在需要时从UACpipe理员权限请求?
  • 给应用程序提高UAC
  • 检测程序是否以完全pipe理员权限运行
  • Windows 7是否像Vista那样限制文件夹访问?
  • 允许与不匹配完整性级别的.NET COM服务器连接
  • 在运行时请求pipe理员权限
  • 我如何运行需要提升和等待的subprocess?
  • “以pipe理员身份运行”时Windowsbatch file的起始目录