59

Windows 用の MSI インストーラーを作成しており、signtool を使用してインストーラーに署名しています。.msi を実行してテストすると、UAC (ユーザー アカウント制御) プロンプトが表示され、インストールの続行を許可するかどうかを尋ねられます。これで問題ありませんが、プロンプトにはいくつかのフィールドが表示され、[プログラム名] フィールドには「403b3.msi」のように表示されます。これは、私が実行している msi の名前ではありません。

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

4

2 に答える 2

78

signtool を実行して msi に署名するときは、/d コマンド ライン引数を必要なプログラム名と共に使用します。

Windows インストーラーが msi ファイルの一時コピーを作成し、実行する前に生成された名前を割り当てているようです。/d を signtool で使用しないと、ユーザーにとってあまり役に立たない一時的なファイル名が表示されます。

于 2010-11-30T16:12:39.143 に答える
5

これは @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
)
于 2015-03-12T16:39:02.580 に答える