windows - تعرض موجه UAC اسم برنامج مؤقت عشوائي لـ msi ، هل يمكن عرض الاسم الصحيح؟




certificate signtool (2)

استخدم وسيطة سطر الأوامر / d مع اسم البرنامج المطلوب عند تنفيذ signtool لتوقيع msi.

يبدو أن أداة تثبيت Windows تقوم بإنشاء نسخة مؤقتة من ملف msi وتعيينها اسمًا تم إنشاؤه قبل تشغيله. إذا لم تستخدم / d مع signtool ، فستتمكن من رؤية اسم الملف المؤقت الذي لا يفيد المستخدمين لديك.

أقوم بإنشاء مثبّت MSI للنوافذ وتوقيع المثبت باستخدام signtool. عندما أقوم بتشغيل .msi لاختباره ، يظهر موجه UAC (التحكم في حساب المستخدم) ليسألني عما إذا كنت أريد السماح بمتابعة التثبيت. هذا جيد ، لكن الموجه يعرض عددًا من الحقول ، وبالنسبة لحقل اسم البرنامج ، فإنه يعرض شيئًا مثل "403b3.msi". هذا ليس اسم msi الذي أديره.

كيف يمكنني الحصول على اسم البرنامج الصحيح ليتم عرضه؟


هذه نسخة مطبقة من تعليق @ Scott-langham.

كان هذا مباشرة من 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
)




signtool