埋め込みファイルバージョンで自己解凍型実行可能ファイルを作成するための優れた無料ユーティリティとは何ですか? [閉まっている]

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

質問

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

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

だから、msiファイルとVisual Studioで生成されたsetup.exeを含む自己解凍型の実行可能ファイルを作成し、代わりにこの自己解凍型の実行可能ファイルにファイルバージョンを配置します。

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

見つけることができたのはこれだけでしたが、見た目は素晴らしいですが、無料の代替品を好むでしょう。

提案はありますか?

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

別の編集:ええ、もう自分の質問に答えてしまったので、もう自己解凍器は必要ありません。そのため、この質問全体はほとんど無関係になります。 setup.exeとsetup.msiではなく、1つのファイルのみを配布できるようにすると、 いいでしょう。

役に立ちましたか?

解決

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

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

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

他のヒント

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

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

詳細については、 http://support.microsoft.com/kb/888473

短所:

  • 製品の新しいバージョン(MSI)があるたびに、製品のバージョンでSetup.exeを再コンパイルする必要があります。
  • Setup.exeのソースが配布されているライセンスがわからない。

実際にこの特定のリリースでは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

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

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

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

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

nsis は良い選択のようです

inno-setup

をお試しください

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

VersionInfoVersion = 1.1.0.0

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

ここで進行中の実験:

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

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

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

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top