問題タブ [orca]
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.
windows-installer - 永久レジストリ キー - orca - msi GUID
.msi パッケージを使用して、存在しない場合はいくつかのレジストリ キーを作成し、存在する場合はそのままにし、プログラムが削除された場合は削除しないようにします。コンポーネント、FeatureComponents、Registry、および LockPermissions の msi テーブルにエントリを追加して、(Orca を使用して) これを行いました。私の質問は、これらのキーの Component テーブルの ComponentID で使用される GUID についてどうすればよいですか? 選択肢は3つあるようです。
1)それらを一度割り当てて、msiの将来のバージョンでそのままにしておきます
2) 新しいバージョンが作成されるたびに新しいものを割り当てる
3) NULL を使用する ( http://msdn.microsoft.com/en-us/library/aa368007(VS.85).aspxによる) 私はこれを試していません。
これらのいずれかが他のものよりも優先されますか? どちらか一方が他方に影響を与えることはありますか? (プログラムが削除された場合は、可能な限り小さなものを残すことをお勧めします)。
また、永続属性ビット (16) に関する次のコメントが何を意味するのか知りたいです。
このビットが設定されている場合、インストーラーはアンインストール中にコンポーネントを削除しません。インストーラーは、コンポーネントの追加のシステム クライアントを Windows インストーラーのレジストリ設定に登録します。
これらのエントリはどこにありますか?
windows-installer - DISABLEADVTSHORTCUTS=1 はすべてのショートカットを無効にします
起動時に実行するアプリケーションがあり、インストール後に多くのインストール済みファイルを変更できます。DISABLEADVTSHORTCUTS=1Orca でプロパティを設定して、自己修復モードをオフにしようとしています。ただし、このプロパティが設定されている場合、ショートカットは作成されません。私が見たすべての情報は、「宣伝されていない」ショートカットをDISABLEADVTSHORTCUTS=1set で作成できるはずであることを示しています。何か案は?
をそのままにしておくと、ショートカットが正しく作成されることを確認しましたDISABLEADVTSHORTCUTS。
visual-studio-2008 - MSI実行中にDLL実行(インストーラー)
アプリケーション用にMSIを作成しましたが、このMSIのインストール中にdllを実行したいと思います。dllをMSIに追加するにはどうすればよいですか。ORCAで何かを読みましたが、エラーが発生します。
誰かがorcaを使用して私のdllをmsiに追加するのを手伝ってもらえますか?私のdllにはメッセージボックスとレジストリエントリが含まれています
installation - マージモジュールからのファイルの抽出
必要なのは、マージモジュール(.msm)からディスクにファイルを抽出できるコマンドラインツールだけです。言い換えると、MSIで可能なのと同じ「管理インストール」機能が必要です。
msiexec / a myProduct.msi TARGETDIR = "C:\ myInstallation" / qn
上記はmsiでのみ機能します(私が知る限り)。したがって、マージモジュールで同じ効果を得るには、msidb.exeとorca.exeを試しています。orcaのドキュメントには次のように記載されています。
多くのマージモジュールオプションは、コマンドラインから指定できます。
マージモジュールからのファイルの抽出
Orcaは、マージモジュールに含まれるファイルを抽出するための3つの異なる方法をサポートしています。Orcaは、個々のCABファイルを抽出し、ファイルをモジュールツリーに抽出し、ターゲットデータベースにマージされた後、ファイルをソースイメージに抽出できます...
ファイルの抽出
マージモジュールから個々のファイルを抽出するには、
... -x ...コマンドラインのオプション。ここで、は新しいディレクトリツリーへの目的のパスです。
指定されたパスは、抽出されたファイルのルートパスとして使用されます。すべてのファイルは、モジュールに埋め込まれたCABファイルから抽出され、指定されたパスに配置されます。抽出されたファイルのディレクトリレイアウトは、マージモジュールのディレクトリツリーに基づいています。
それは私が必要なもののように聞こえます。しかし、私が試してみると、orcaは(指定したmsmに関する情報を含む)エディターを開くだけで、何もしません。私はさまざまなコマンドラインを試しましたが、通常は次のようになります。
orca -x theDirectory theModule.msm
空のフォルダとして「theDirectory」を使用します。私が言ったように-それは何もしませんでした。
次に、msidbを試しました。ここで、いくつかの試行は次のようになります。
msidb -d theModule.msm-w{ストレージ}
msidb -d theModule.msm -x MergeModule.CABinet
最初のケースでは、{storage}に何を入れるべきかわかりません。2番目のケースでは、リテラル文字列「MergeModule.CABinet」が必要であることがわかります(これは予約済みの名前です)。ただし、抽出されたキャビネットは、ファイル階層または「通常の」ファイル名を保持しません。だから私は自分の目的のためにそれを使うことができません。
誰かが私がコマンドラインオプションで間違っていることを説明できますか?これを行うことができる他のツールはありますか?
windows-installer - 検証前の Windows インストーラー カスタム アクション
ここにあるチュートリアルに基づいて、Windows インストーラーのカスタム アクションを作成しました: http://www.codeproject.com/kb/install/msicustomaction.aspx
私のカスタムアクションは、ユーザーがまだ開くことができる特定の名前のバックグラウンドプロセスを強制終了しています。その理由は、特定の EXE が実行中であり、セットアップを続行するには閉じる必要があるという警告をユーザーに表示したくないからです。これは、チュートリアルのように「InstallUISequence」テーブルでアクションが作成されるため、MSI が UI シーケンスを通過するときに正常に機能します。
ただし、MSI がサイレント モードで使用されている場合 (右クリックして [修復] または [アンインストール] を選択)、カスタム アクションはもちろん実行されません。
カスタム アクションをサイレント モードで実行した場合でもすぐに実行されるようにするには、どこにカスタム アクションを配置する必要がありますか?
「InstallExecuteSequence」に追加してみましたが、「アプリ実行中」の警告がまだ表示されます。次に、カスタム アクションのシーケンス番号を 5 に下げてみましたが、これも役に立ちませんでした。
注:
Orca を使用して、Visual Studio セットアップ プロジェクトから生成された MSI を変更しています。次に、変換ファイルを使用して適用します。
wix - 管理されたカスタム アクションを使用してプロジェクトをセットアップします。めちゃめちゃ頭悪い
セットアップ プロジェクトを作成しようとしていますが、信じられないほど大変です。私が使用しようとしたツールのどれも、私を満足させていません。どうして?さて、見てみましょう:
最初の最も簡単なオプション: Visual Studio でビルドされたプロジェクトをセットアップします。簡単かつ迅速。コードが c# または vb.net で記述されている場合でも、カスタム アクションを簡単に実装できます。まさに私が欲しかったもの。しかし、このアプローチにはいくつかの欠点があり、その主な欠点は、カスタム ダイアログを実装するための信じられないほど面倒な方法です。たとえば、DB 資格情報を要求する必要がある場合は、ユーザーを承認し、残りのインストールを続行します。しかし、いいえ。VS でカスタム セットアップ ダイアログを作成する方法はありません。実は方法はありますが、簡単ではありません。つまり、冗談ですか?いくつかの簡単なダイアログを作成するのに 1 日を費やさなければなりませんか?
2 番目のオプション: 何らかのツールを使用します。InstallShield のように。あなたはそれを支払う必要があります、はい、幸いなことにそれはとても安いです. わずか5500ドル。大したことではありませんよね?たぶん、でも私にとっては「おい、忘れろ」のようなものです
3 番目のオプション: WIX Nice を使用します。多くのオプションがあります。組み込みの VS のように使いやすいわけではありませんが、はるかに優れた機能が多数あります。唯一の問題は、C# で記述されたコードを実行するように説得するのに数時間費やしたことです。私は失敗しました。何も役に立たず、私はあきらめました。
今。開発者を知っている私の仲間の専門家を喜ばせてください。助けて。私は何をすべきか?私の問題を解決する最善の方法は何ですか (私の上司が私を殺すと信じてください。彼は従業員の死体よりも結果を達成するのが好きです)。
.wid ファイルを編集するより良い方法があれば教えてください。Orca ツールを使用するのは簡単な解決策ではありません。または、マネージド c# コードを実行できる WIX でビルドされたセットアップ プロジェクトの実際の例を示してください。
ありがとうございました!
visual-studio - ビルド後の手順として、.msi ファイルの内容を変更したり、バイナリを置き換えたりするにはどうすればよいですか?
x64 システムで CustomAction を使用して Visual Studio 2010 セットアップ プロジェクトをビルドすると、Visual Studio に間違ったバージョンの が含まInstallUtilLib.dllれます。32 ビット shim がインストールされますが、これは 64 ビットとしてコンパイルされた CustomActions では機能しません (私の場合は要件に依存するため)。 64 ビットのネイティブ dll で)。
.msiそのような結果をインストールすると、System.BadImageFormat例外が発生します。
この投稿 (64-bit Managed Custom Actions with Visual Studio)によると、解決策は結果.msiを開いてorca.exeバイナリの「InstallUtil」を置き換えることです。
これを自動化したい。何か案は?
編集: mohlsenから提供された回答に基づいて、次のスクリプトをソリューションに追加しました(セットアッププロジェクトに追加されたファイルはmsiに入るため、セットアッププロジェクト自体ではありません...):
次に、セットアップ プロジェクトのプロパティを編集しました。PostBuildEventプロパティを次のように設定しました。
注: ソリューション エクスプローラーでセットアップ プロジェクトを右クリックして [プロパティ] を選択すると、間違ったダイアログ ([プロパティ ページ]) が開きます。「プロパティウィンドウ」(CTRL + W、P)が必要です。
vbscript - *.msi に含まれるファイルの内容を VBScript で変更する方法
VS2010 セットアップ プロジェクトで生成されたインストーラーを使用して、名前を変更せずに .NET DLL を別の DLL と交換したいと考えています。
私はすでにこの質問msiに従ってファイルを変更しており、「バイナリ」テーブルのエントリの内容を交換しています。
Orca を使用して問題のファイルを見つけました。唯一のキャビネット ファイルに常駐します。このキャビネット ファイルは「メディア」テーブルにあります。このキャビネット ファイル (API) を変更する方法がわかりません。また、MSI データベースの一部の情報 (「MsiAssemblyName」テーブル内のアセンブリの「ProcessorArchitecture」レコード) も変更する必要があると思われます。
理由: Autodesk Revit 2011 プラグインのインストーラを作成しています。これらはRevitAddinUtility.dll、インストーラーにバンドルする必要があるアセンブリを使用して登録されます。このアセンブリには、32 ビット インストール用と 64 ビット インストール用の 2 つの種類があります。複数のインストーラーを作成するのを避けるために、インストーラーを作成するときに正しいバージョンにスワップする必要があります。
windows-installer - MsiMsp.exe を使用したパッチのビルド -- ターゲットの MSI が元の MSI と異なる可能性はありますか?
すでに配信されている製品の msp パッチを作成しています。製品には多数のコンポーネント/ファイルがあります。
元のターゲット MSI とアップグレード MSI (orca を介して手動で変更) からパッチを作成しています。ここまでは順調ですね。
パッチのビルドと適用には多くのファイルが必要なので、両方の MSI から変更されていないファイルをすべて削除してスピードアップすることを考えています。ターゲット MSI にいくつかの変更を加えることができることはわかっていますが、それでも問題なく適用されますが、ファイル/コンポーネント/ディレクトリへの変更について疑問に思っています。誰か教えてくれませんか
- そもそもファイルの削除が機能する場合、および
- 追加のパッチ (ベースラインとパッチが適用されたバージョンの両方) で問題が発生する場合は?
これまでにほぼすべての穴にぶつかったので、今回は最初に質問しようと思いました。そして、私はまだ Windows インストーラーを完全に把握していないことを率直に認めます。
ありがとう!
visual-studio-2010 - MSI の作成: アップグレード前にアプリケーションを終了する
Microsoft Visual Studio 2010 を使用して、単純な .EXE アプリケーション用の単純な .MSI インストーラーを作成しています。
問題は、.EXE がまだ実行されている間にアップグレードをインストールすると、(再起動するまで) 問題が発生することです。
インストール/アップグレードの前に、.MSI インストーラーがプロセスを終了するようにしたいと思います。
Orcaでこれを行う方法を教えてください。
編集:.EXEが使用されているためにこれが発生するのを見てきましたが、アップグレード時に.CHMヘルプファイルも開いていたため、プロセスの終了だけではこれを解決するのに十分ではありませんでした。問題。