我正在构建Windows的MSI安装程序并使用signtool签署安装程序。当我运行.msi进行测试时,UAC(用户帐户控制)提示出现问我是否要继续安装。这很好,但提示显示了一些字段,并且对于Program Name字段,它显示类似“403b3.msi”的内容。这不是我正在运行的msi的名称。UAC提示符显示msi的临时随机程序名称,可以显示正确的名称吗?
如何获取正确的程序名称以显示?
我正在构建Windows的MSI安装程序并使用signtool签署安装程序。当我运行.msi进行测试时,UAC(用户帐户控制)提示出现问我是否要继续安装。这很好,但提示显示了一些字段,并且对于Program Name字段,它显示类似“403b3.msi”的内容。这不是我正在运行的msi的名称。UAC提示符显示msi的临时随机程序名称,可以显示正确的名称吗?
如何获取正确的程序名称以显示?
在执行signtool签署msi时,使用带有所需程序名称的/ d命令行参数。
看来,Windows安装程序创建msi文件的临时副本,并在运行之前为其分配一个生成的名称。如果你没有在signtool中使用/ d,你会看到临时文件名,这对你的用户不是很有用。
这是@ 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
)
当添加/ d,你需要一个描述也。 IE:/ d“我的应用程序!” – Dave 2017-03-20 21:13:47