El indicador de UAC muestra un nombre de programa aleatorio temporal para msi, ¿se puede mostrar el nombre correcto?


Estoy creando un instalador MSI para windows y firmando el instalador usando signtool. Cuando corro el .msi para probarlo, el UAC (User Account Control) aparece para preguntarme si quiero permitir que la instalación continúe. Eso está bien, pero el mensaje muestra una serie de campos, y para el campo Nombre del programa muestra algo como "403b3.msi". Este no es el nombre del msi que estoy dirigiendo.

¿Cómo puedo obtener el Nombre correcto del Programa que se mostrará?

Author: Scott Langham, 2010-11-30

2 answers

Utilice el argumento de línea de comandos /d con el nombre del programa requerido cuando ejecute signtool para firmar el msi.

Parece que el instalador de Windows crea una copia temporal del archivo msi y le asigna un nombre generado antes de ejecutarlo. Si no usas /d con signtool, puedes ver el nombre de archivo temporal que no es muy útil para tus usuarios.

 57
Author: Scott Langham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-30 16:12:39

Esta es una versión aplicada del comentario de @Scott-langham.

Esto fue directamente desde el PostBuildEvent de un proyecto de instalador de visual studio - archivo 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
)
 3
Author: JJS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-12 16:39:02