В подсказке UAC отображается временное случайное имя программы для msi, может ли отображаться правильное имя? - PullRequest
51 голосов
/ 30 ноября 2010

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

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

Ответы [ 2 ]

62 голосов
/ 30 ноября 2010

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

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

4 голосов
/ 12 марта 2015

это прикладная версия комментария @ Scott-langham.

это было непосредственно из 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
)
...