UACプロンプトには、MSIの一時的なランダムプログラム名が表示されますが、正しい名前を表示できますか?

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

質問

Windows用のMSIインストーラーを構築し、SignToolを使用してインストーラーに署名しています。 .msiを実行してテストすると、UAC(ユーザーアカウントコントロール)プロンプトが表示され、インストールの進行を許可するかどうかを尋ねます。それは問題ありませんが、プロンプトには多くのフィールドが表示され、プログラム名フィールドには「403b3.msi」のようなものが表示されます。これは私が実行しているMSIの名前ではありません。

正しいプログラム名を表示するにはどうすればよいですか?

役に立ちましたか?

解決

SIGNTOOLを実行してMSIに署名するときに、必要なプログラム名で /Dコマンドライン引数を使用します。

Windowsインストーラーは、MSIファイルの一時コピーを作成し、実行する前に生成された名前を割り当てているようです。 SignToolで /Dを使用しない場合、ユーザーにとってあまり役に立たない一時的なファイル名を見ることができます。

他のヒント

これは、 @Scott-Langhamのコメントの応用バージョンです。

これは、Visual Studioインストーラープロジェクトの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
)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top