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

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

سؤال

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

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

هل كانت مفيدة؟

المحلول

استخدم وسيطة سطر الأوامر /D مع اسم البرنامج المطلوب عند تنفيذ SignTool لتوقيع MSI.

يبدو أن برنامج Windows Installer يقوم بإنشاء نسخة مؤقتة من ملف MSI ويعينه اسمًا تم إنشاؤه قبل تشغيله. إذا لم تستخدم /D مع SignTool ، فستحصل على اسم الملف المؤقت الذي ليس مفيدًا جدًا للمستخدمين.

نصائح أخرى

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

كان هذا مباشرة من Postbuildevent لمشروع Instrant

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