5


3

https://stackoverflow.com/questions/151250/how-do-i-embed-a-file-version-in-an-msi-file-with-visual-studio[この]質問への回答によると、私は私の.msiファイルにファイルバージョンを埋め込むことはできません。

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

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

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

私が見つけることができたのは これで、すごく良さそうに見えますが、私は無料の代替手段をもっと望みます。

誰かが何か提案がありますか?

*編集:*明確にするために、私はインストーラを作成することを本当に考えていません - 私はすでにVSセットアッププロジェクトを持っています。 WinZipが作成できるような自己解凍ファイルが欲しいのです。 だから、ユーザーはSetup-Blorgbeard2008.exeの上にマウスを置いて、 "Version:1.0.0.0"を見ている。 ユーザーがそれをダブルクリックし、それは黙ってsetup.exeとsetup.msiを一時フォルダーに抽出してからsetup.exeを実行します。 その後、ユーザーは通常のインストーラー画面を見て通常通りに進みます。

*もう一つの編集:*私の他の質問は今答えられたので、私はもう自己解凍語を必要としません。 それはこの質問全体をほとんど無関係にします。 setup.exeとsetup.msiではなく、1つのファイルしか配布できないのがいいでしょう。

9 Answer


10


まだここにリストされていないことに少し驚いた: IExpressは、Windowsに付属している簡単なツールで、自己解凍インストーラーを作成するために使用することができます。


4


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

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

実際、NSISがインストーラパッケージを作成すると…​ あなたはあなたのアプローチをかなり簡単にすることができるかもしれません。


2


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

短所:

  • 製品の新しいバージョン(MSI)があるたびに、Setup.exeを製品のバージョンで再コンパイルする必要があります。

  • Setup.exeのソースがどのライセンスで配布されているのかわからない。


2


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

参考までに、これが私が使ったスクリプトです。

VIProductVersion "1.0.0.0";ここでバージョンを設定してくださいVIAddVersionKey "FileVersion" "1.0.0.0";そしてここ! VIAddVersionKey "CompanyName" "MyCompany" VIAddVersionKey "LegalCopyright" "©MyCompany" VIAddVersionKey "FileDescription" "MyProgram用のインストーラ" OutFile MyProgram-Setup.exe

サイレントインストールサイレント

セクションMainSetOutPath $ TEMP SetOverwrite onファイルSharedManagementObjects.msiファイルSQLSysClrTypes.msiファイルRelease \ Setup.exeファイルRelease \ Setup.msi ExecWait 'msiexec / passive / i "$ OUTDIR \ SharedManagementObjects.msi"' ExecWait 'msiexec / passive / i "$ OUTDIR \ SQLSysClrTypes.msi" 'Exec' "$ OUTDIR \ Setup.exe"セクションの終わり


2


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

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

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

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


1


http://www.innosetup.com/isinfo.php[inno-setup]を試してください。

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

VersionInfoVersion = 1.1.0.0

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


1


http://nsis.sourceforge.net/Main_Page[nsis]は良い選択のように見えます


1


ここで進行中の実験:

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

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

普通の古いMSIファイルでインストールされます。

セットアッププロジェクトのDescriptionプロパティに "Version:1.5.0"というテキストを追加すると、バージョン番号もMSIファイルに次のように表示されます。http://screencast.com/t/A499i6jS

私は一般的に私の目的のためにDataMonkey_1_5_0.msiのようにMSIファイルの名前を変更するだけです。


0


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