問題タブ [burn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wix - 前提条件として他の子 MSI を使用して MSI を作成するベスト プラクティスは何ですか?
現在、MSI 前提条件をインストールするためのブートストラップとしてInno Setupを使用しています。セットアップを維持するのは少し複雑です。単一のセットアップで必要なものをインストールすることで、この問題を解決するのに役立つ書き込みツールを見つけました。このツールのドキュメントもサンプルも見つかりませんでした。誰もこれについて考えていますか?または、代替ソリューションはありますか?
現在、ISS ブートストラップで行っているアクションの代替ソリューションを探しています。
- ファイルの解凍 (メインセットアップ、前提セットアップ)
- 前提条件のステータスを確認し、オンデマンドでインストールする必要があります。
- メインインストールを開始します。
wix - インストール前に機能のインストール コストを取得する
インストール用のカスタム ブーストラップ / 外部 UI を作成しています。
ユーザーがインストールまたは削除する機能を選択できるように、(MSI のような) "カスタム インストール" ダイアログを提供したいと考えています。
現在、MSI データベース自体から機能 (および説明などのその他の機能の詳細) を読み取ることができます (Feature
テーブルに対して SQL クエリを実行することにより)。
ただし、機能をインストールするためのコストも表示したいと考えています。Windows インストーラーの [カスタム インストール] ダイアログは、これを行うことができます。
次のようにすることで、動作を模倣できると思います。
Feature
コストを取得したい を選択してくださいFeatureComponents
テーブルを使用しComponent
て、フィーチャに関連付けられている を 1 から取得します。- 表を使用して、2 で特定されたコンポーネントに関連付けられているファイルを
File
追加します。FileSize
- 3 の合計は、機能のインストールのコストです
質問:
- インストール前に機能のコストを取得するために使用できる API (DTF または MSI.DLL のいずれか) はありますか? (
FeatureInfo.GetCost
DTF にはメソッドがありますが、それを直接使用することはできません。FeatureInfo.GetCost
から呼び出す前に、まず製品をインストールする必要がありますProductInstallation
) - API がない場合、上記の手順は、機能のインストールのコストを計算するのに適切または正しいですか?
ありがとう!:)
更新 # 1
インストールを開始する前であっても、API を介して機能のインストールのコストを取得する方法があると思います。これが私がそれをした方法です:
呼び出しinfo.name
に成功すると、機能の名前が返されます。ただし、呼び出すと、「選択マネージャーが初期化されていません」というメッセージinfo.GetCost
が返されます。InvalidHandlerException
私が現在いる場所はここです。
更新 #2:
を呼び出す前にInvalidHandlerException
、必要なファイル コスト計算ルーチンを呼び出していないため、 を取得していましたinfo.GetCost
。これが私の変更されたコードです:
InvalidHandlerException を取得しなくなりましたが、返されるすべてのファイル コストは -1099511627776 です。
wix - MSI/WiX - 複数インスタンス変換中のコンポーネント GUID の割り当て
WiX 3.5 を使用して、インスタンス トランスフォームを備えた MSI を使用して、異なる製品名で同じマシンにソフトウェアをインストールできるようにしました。これを行うために、条件付きで定義された .wxs ファイルに製品 ID と名前の「ハードコーディングされた」リストがあります。ただし、ファイル リソースと非ファイル リソースの両方を含む単一の Feature-ComponentRef 定義しかありません。
インストールは正常に機能しているように見えますが、インスタンスをアンインストールすると、次の 2 つのソースで言及されている動作が示されます。
http://msdn.microsoft.com/en-us/library/aa367797(v=VS.85).aspx
と
具体的には、アプリケーションの最後のインスタンスを除いて、ファイル以外のリソース (この場合はレジストリ エントリ) がアンインストールされることはありません。(つまり、instance1、instance2、instance3 の順にアンインストールすると、instance3 のファイル以外のリソースのみが削除されます。
これは、ファイル以外のコンポーネントに一意の GUID がないことに関連していると推測しています (ファイル コンポーネントでは問題になりません)。
したがって、有効なアプローチは、1 つの製品 ID、名前、および 1 つの機能セットを含む単一の .wxs ファイルを定義することであるかどうか疑問に思っていましたが、カスタム ブートストラップに、製品および非ファイル コンポーネントの新しい GUID を生成させ、それを挿入します。実行時に MSI データベースに? つまり、その後、アンインストールまたは更新するときが来たら、インストールされたインスタンスのレジストリを照会し、それらの GUID を取得します。
これにより、事前に .wxs にハードコーディングするのではなく、実行時にインスタンスを作成し、クリーンにアンインストールすることができます。
それは理にかなっていますか?バーンはすべてを良くしますか? :)
user-interface - WiX バンドル UI - 選択可能なプロダクト ツリー
最近、7 つのアプリケーション インストーラーを WiX に移行しました。古いインストーラー (10 年以上前のテクノロジ、UI は Windows 3.1 セットアップのように見えます) は、バンドル インストーラーに既に製品ツリーがあり、インストールする製品を選択することができました。
7つの製品すべてが正常にインストールされた、機能するバンドルインストーラーがあるところまで来ました。しかし、バンドル全体からインストールする製品を選択できる必要があります。
これはブートストラップ UI の問題であることを理解しています。このツリーが必要な場合は、C# で独自のブートストラップを作成する必要があります。残念ながら、これは全体の価値よりも大きなプロジェクトのようです。だから私の質問は:
- 複数の MSI インストーラーをブートストラッパーにまとめて、それらを次々にインストールし、選択可能な製品ツリーを持つ簡単な方法はありますか? (無料の製品が必要です。)
- このような WiX 用のブートストラッパーの実際のサンプル コードを持っている人はいますか?
前もって感謝します!
wix - Burnを使用してWiXにVisualC++再配布可能ファイルを展開する方法
インストーラーをWiX2.xからWiX3.6に移行し、 Burnの使用を開始しました。以前は、からの.msmファイルをMSIに含めることにより、VisualC++再配布可能ファイルをインストールしていました。これらのファイルは、製品の構築に使用するファイルと常に同期しています(これらのファイルは、セキュリティ修正を含めるためにMicrosoftによって頻繁に更新されます)。C:\Program Files\Common Files\Merge Modules
ここで、Burnフレームワークを使用して必要な場合にのみ、VisualC++再配布可能ファイルをダウンロードしてもらいたいと思います。MsmPackage
ただし、Burnは内部に配置する要素を定義しませんChain
。
Burnを使用して再配布可能なVisualC++を展開するための最良のアプローチは何ですか?
wix - Wix: 書き込み管理された UX で MSI パッケージのサイズを表示する方法
ユーザーが個々のパッケージを選択してダウンロードおよびインストールできる Wix 3.6 マネージド ブートストラップがあります。各パッケージのダウンロード サイズを表示したい。内の各パッケージのファイル サイズにアクセスするにはどうすればよいBundle
ですか?
この情報は Wix フレームワークのどこかで入手できると思います (ダウンロードしたファイルの検証にファイル ハッシュが使用されるため) が、見つかりませんでした。
回避策のアイデアはありますが、それは私にとってより多くの実装になるでしょう:
- パッケージのファイル サイズを含む要素を含む
wxs
ファイルをプログラムで生成します。Variable
これらの変数は、ブートストラップによって読み取られます。
wix - カスタムWiXBurnブートストラッパーユーザーインターフェイス?
私は主にWiX3.6でインストールパッケージを作成しているので、Burnブートストラップ機能を利用できます。これまでのところ、組み込みのブートストラッパーアプリケーション()とともにインストールされるいくつかのMSIパッケージがバンドルされていますWixStandardBootstrapperApplication.RtfLicense
。
Burnを使用すると、カスタムを指定することでデフォルトのブートストラッパーアプリケーションを置き換えることができることを読みましたが、カスタムの構築方法(つまり、Burnエンジンとの統合方法など)UX.dll
を説明するリソースをまだ見つけることができませんでした。ux.dll
使用するテクノロジー、実装する必要のあるインターフェイスなど)。
私の目標は、ユーザーから任意の情報を収集し、その情報をさまざまなバンドルされたMSIファイルやEXEファイルなどに渡すことができるブランドのブートストラッパーを作成することです。
だから私は本当に2つの質問があります:
- デフォルトのブートストラッパーアプリケーションはどの程度カスタマイズ可能ですか?
- カスタムを構築する方法を説明する利用可能なリソースはあります
UX.dll
か?
wix - WiXBurnカスタムUI
WiXとBurnのカスタムUIを作成しようとしています。私は見つけたガイドのいくつかに従いましたが、これまでのところ、BootstrapperApplicationから継承した次のプロジェクトがあります。
そしてAssemblyInfo.csで:
次に、私のBootstrapperプロジェクトには、次のものがあります。
MyBA.BootstrapperCore.configを追加しました
ただし、ブートストラッパーに対してSetup.exeを実行すると、スプラッシュスクリーンが短時間表示されますが、それ以外は表示されません。ログの%TEMP%を見ると、次のようになっています。
なぜこれが発生し、上記のエラーが発生するのですか?