問題タブ [basic-msi]
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.
com - MSI によって作成された不可解な LocalServer32 レジストリ エントリについて
MSI インストール中に MSI テーブルとその他の関連テーブルを使用してClassCOM クラスを登録すると、LocalServer32 の値にパスがなく、暗号化された値が含まれていることに気付きました。これは、MSI ProductCode と Component GUID のある種のハッシュである可能性があることを示唆する Web 上の限られた情報を参照していますが、これがどのように機能するかについての詳細な情報は見つかりません。
この種の登録の機能の 1 つは、複数インスタンスのインストールで、返されるコンポーネントのインスタンスがクライアントと同じインストールからのものであることを保証することであるかどうか、特に疑問に思っています。私はそれを疑っていますが、このスキームが達成するすべてを理解したいのですが、情報がどこにあるのかわかりません。
このようなレジストリ エントリのサンプルを次に示します。

dialog - ダイアログの戻るボタンの使用
いくつかのショートカット オプションを提供 SetupProgress するダイアログを表示するダイアログの前に挿入した単純なカスタム アクションがあります。AskOptions
ほとんどの場合、期待どおりに動作していますが、理解できない動作が 1 つあります。ユーザーが戻るボタンをクリックすると、前のダイアログに移動し、ダイアログを続行しないようにしSetupProgressます。ダイアログに次のコードを使用します (実際にショートカットを作成するコードは除きます)。
ご覧のとおり、一番下に戻るボタンを処理できる行がありますが、実際に前のダイアログに戻る方法がわかりません。
customdialog - InstallShield 2010 基本 MSI プロジェクト - シーケンスを実行するためのダイアログの追加
InstallShield 2010 で基本の MSI プロジェクトの実行シーケンスにカスタム ダイアログを追加する方法は?
インストーラーが .EXE ファイルとして直接実行された場合、または基本的な ui コマンド ライン引数を使用してコマンド ライン MSIEXEC.EXE から実行された場合に、このダイアログが表示されるようにします。
これは可能ですか?
前もって感謝します
ラグー。
installshield-2010 - InstallShield 2010 基本 MSI メジャー アップグレード エラー 2753
製品のインストールに InstallShield 2010 Basic MSI Project を使用しています。これで、以前のバージョンからのメジャー アップグレードを実行するためのメジャー アップグレード アイテムが作成されました。
プロジェクトには、サードパーティのコンポーネントを登録するEXEファイルがあります。これは、インストール、アンインストール中に異なるコマンドライン引数で呼び出す必要があります。
このための 2 つのカスタム アクション (CA: EXE、製品と共にインストール) を作成しましたが、これは以前のビルドでは正常に機能していました。
1) REGMYCOMP - インストール用 -遅延実行- InstallFinalize の前にシーケンス(状態:インストールされていない)
2) UNREGMYCOMP - アンインストール用 -遅延実行- RemoveFiles の前にシーケンス(条件: (REMOVE = "ALL") OR (IS_MAJOR_UPGRADE) )
メジャー アップグレード (MSIEXEC.EXE を使用して MSI を直接実行) 中にUNREGMYCOMP CA が失敗し、次のエラーが表示されます。
エラー 2753 ファイル 'xxxx.exe' はインストール対象としてマークされていません。
コントロール パネルの ARP エントリから製品をアンインストールしようとすると、同じことが起こります。
installation - シールド基本 msi をインストールします。入力した構成ファイルのパスが有効な場合にエラー ダイアログを表示する方法
CheckTargetPath = 0 を使用して、テキスト ボックス イベントに入力されたパスを検証しました。入力されたパスが有効でない場合、次のダイアログに進みません。しかし、同じダイアログ内の別のテキスト ボックスまたは別のダイアログ ボックスにエラー メッセージを表示したいと考えています。ご意見をお聞かせください。
installshield - デュアル パーパス パッケージと MajorUpgrade
二重目的のパッケージを作成しようとしていますが、アップグレードに問題があります。
デフォルトでは、私のプロパティ
ALLUSERS=2はMSIINSTALLPERUSER=1
readyToInstall「すべてのユーザーにインストールする」がチェックされている場合、ダイアログでSetProperty を使用しALLUSERS=1てMSIINSTALLPERUSER={}(念のため) 入れます。
その部分は正常に動作し、レジストリは HKLM に設定され、ファイルは Program Files に設定されます。
ただし、アップグレード中に...AppSearchキーが設定されたHKLMにあるかどうかを確認するカスタムアクションがALLUSERS=1ありMSIINSTALLPERUSER={}ます。
マイナー アップデートを行うと、ファイルは正しくアップグレードされます。
メジャー アップデートを行うと、レジストリはまだ HKLM にありますが、ファイルは に切り替わりますLocalAppData(実際にはデフォルト値に従いますALLUSERS) AppSearch。(UIを模倣するためだけに、移行機能の状態の後にそれを強制しようとさえしましたが、どちらも機能しませんでした).
デュアル パーパス パッケージでメジャー アップグレードを行う方法はありますか?