В приглашении UAC показывает временное случайное имя программы для MSI, можно ли отобразить правильное имя?

StackOverflow https://stackoverflow.com/questions/4315840

Вопрос

Я строю установщик MSI для Windows и подписываю установщик с помощью Signtool. Когда я запускаю .msi, чтобы проверить его, приглашение UAC (управление учетной записью пользователя) отображается, чтобы спросить меня, хочу ли я позволить установке продолжаться. Это нормально, но в подсказке показано несколько полей, а для поля имени программы он отображает что -то вроде «403B3.msi». Это не имя MSI, которым я работаю.

Как я могу отобразить правильное имя программы?

Это было полезно?

Решение

Используйте аргумент командной строки /D с обязательным именем программы при выполнении Signtool, чтобы подписать MSI.

Появляется, что установщик Windows создает временную копию файла MSI и назначает ему сгенерированное имя перед его запуском. Если вы не используете /D с Signtool, вы увидите временное имя файла, которое не очень полезно для ваших пользователей.

Другие советы

Это прикладная версия комментария @Скотт-Лангхама.

Это было непосредственно из PostBuildEvent проекта установщика Visual Studio - файл 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
)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top