5

この質問への回答によると、.msi ファイルにファイル バージョンを埋め込むことができません。

クライアントに提供するインストーラーには、ファイル バージョンが必要です。

したがって、私がやりたいことは、Visual Studio によって生成された msi ファイルと setup.exe を含む自己解凍型の実行可能ファイルを作成し、代わりにこの自己解凍型の実行可能ファイルにファイル バージョンを配置することです。

したがって、出力へのファイル バージョンの埋め込みをサポートする自己解凍型実行可能ファイルを作成するためのユーティリティが必要です。また、解凍後のファイルの自動実行をサポートする必要があるため、実際のインストーラーを自動的に起動できます。スクリプト化できると良いですね。

私が見つけたのはこれだけでした。これは見栄えがしますが、無料の代替手段をはるかに好みます.

誰か提案はありますか?

編集:明確にするために、私は実際にインストーラーを作成しようとしているわけではありません-私はすでにVSセットアッププロジェクトを持っています。私は自己抽出器が欲しいだけです(WinZipが作成できるように)。そのため、ユーザーが Setup-Blorgbeard2008.exe にマウス ポインターを合わせると、「バージョン: 1.0.0.0」が表示されます。ユーザーがそれをダブルクリックすると、setup.exe と setup.msi が一時フォルダーに静かに抽出され、setup.exe が実行されます。その後、通常のインストーラ画面が表示され、通常どおり続行します。

別の編集:イェーイ、私の他の質問が回答されたので、自己抽出はもう必要ありません。そのため、この質問全体はほとんど無関係になります。setup.exeとsetup.msi ではなく、1 つのファイルのみを配布できるとなおよいでしょう。

4

9 に答える 9

10

まだここにリストされていないことに少し驚いています。IExpressは Windows に付属するシンプルなツールであり、自己解凍インストーラーの作成に使用できます。

于 2009-02-17T12:44:35.500 に答える
4

NSIS はこれを行うことができます。

ビルド環境の一部は、NSIS スクリプトがソースとする「ヘッダー」ファイルにバージョン情報を出力するスクリプトです。似たようなものを使用してバージョン情報を埋め込むことができるはずであり、抽出後に NSIS にファイルを実行させることができます。

実際、NSIS はインストーラー パッケージを作成するため、アプローチを大幅に簡素化できる可能性があります。

于 2008-09-30T02:50:32.860 に答える
3

Windows SDK をダウンロードすると、MS がコンパイルするソース コードを提供する MSIStuff.exe と Setup.exe があります。MSIStuff は、指定した MSI を Setup.exe に「詰め込みます」。その後、Setup.exe を配布できます。

詳細については、http://support.microsoft.com/kb/888473を参照してください

短所:

  • 製品 (MSI) の新しいバージョンがあるたびに、製品のバージョンで Setup.exe を再コンパイルする必要があります。
  • Setup.exe ソースがどのライセンスの下で配布されているかわかりません。
于 2008-09-30T02:46:28.940 に答える
2

DotNetZipは、Windows エクスプローラーのマウスオーバーに表示されるバージョン番号を含む自己解凍型アーカイブを生成できます。SFX には、Windows エクスプローラーの [プロパティ/詳細] ビューに表示される製品名、説明、製品バージョン、および著作権も含まれています。

SFX は、抽出後に指定したコマンドを実行できます。

SFX の作成は、powershell からスクリプト化するか、VB.NET、C#、VBScript、または JavaScript などを使用してプログラムを作成することができます。

バージョン番号を取得するには、少なくとも v1.9.0.26 の DotNetZip が必要です。

于 2009-10-22T20:42:34.670 に答える
2

他のインストーラーもバンドルする必要があったため、この特定のリリースでは実際に NSIS を使用することになりました。

参考までに、私が使用したスクリプトは次のとおりです。

VIProductVersion              "1.0.0.0" ; set version here
VIAddVersionKey "FileVersion" "1.0.0.0" ; and here!
VIAddVersionKey "CompanyName" "MyCompany"
VIAddVersionKey "LegalCopyright" "© MyCompany"
VIAddVersionKey "FileDescription" "Installer for MyProgram"
OutFile MyProgram-Setup.exe

SilentInstall silent

Section Main    
    SetOutPath $TEMP
    SetOverwrite on
    File SharedManagementObjects.msi
    File SQLSysClrTypes.msi
    File Release\Setup.exe
    File Release\Setup.msi
    ExecWait 'msiexec /passive /i "$OUTDIR\SharedManagementObjects.msi"'
    ExecWait 'msiexec /passive /i "$OUTDIR\SQLSysClrTypes.msi"'
    Exec     '"$OUTDIR\Setup.exe"'
SectionEnd
于 2008-09-30T05:08:52.840 に答える
1

inno-setupを試してください

VersionInfoVersionディレクティブをバイナリバージョン番号に設定します。例:

VersionInfoVersion = 1.1.0.0

これは、マウスオーバーのテキストとプロパティに表示されます

于 2008-09-30T01:35:06.927 に答える
1

nsisは良い選択のように見えます

于 2008-09-30T01:40:01.267 に答える
1

ここで進行中の実験:

ポップアップ バージョン情報: http://screencast.com/t/LVqvLfxCj3g

Visual Studio アセンブリ情報から: http://screencast.com/t/fqunlMNh13

プレーンな古い MSI ファイルでインストールされます。

「バージョン: 1.5.0」テキストを Setup Project の Description プロパティに追加すると、MSI ファイルにもバージョン番号が次のように表示されます: http://screencast.com/t/A499i6jS

私は通常、DataMonkey_1_5_0.msi のように MSI ファイルの名前を変更します。

于 2008-09-30T01:58:38.960 に答える
0

参考までに、ブートストラップ setup.exe を使用して .NET がインストールされていることを確認している場合、DotNetZip 自己解凍プログラムを使用しても意味がありません (DotNetZip 自己解凍プログラムには .NET 2.0 が必要です)。

于 2010-01-27T22:59:11.273 に答える