Bootstrapperが使用されていることを確認するのに役立ちますが、アップグレードが機能しています

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

質問

WIX 3.5.2030.0で執筆したMSIとWindowsインストーラー4.0をターゲットにしています( MSIUSEREALADMINDETECTION サポート)。 MSIで定義したプロパティがあり、ブートストラッパーの使用を強制します(「施行」と言いますが、もちろん「非常に強く奨励している」と言います)。

<Property Id="SETUPEXE"
          Secure="yes" />
<Condition Message="You must run the MSI through the setup program; you cannot run it directly.">
  SETUPEXE = 1
</Condition>

生成されたMSIを新しいインストールとして実行すると、すべてが機能します。ただし、アップグレードとして実行すると、インストーラーに渡されたプロパティは、ある時点で「失われた」ようです。ログには、次の関連するエントリが表示されます。

MSI (s) (2C:8C) [11:27:41:648]: Command Line: SETUPEXE=1 <other properties>

MSI (s) (2C:8C) [11:27:43:055]: PROPERTY CHANGE: Adding SETUPEXE property. Its value is '1'.

MSI (s) (2C:CC) [11:28:11:038]: PROPERTY CHANGE: Adding NETFRAMEWORK20INSTALLROOTDIR property. Its value is 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\'.
Action ended 11:28:11: AppSearch. Return value 1.
MSI (s) (2C:CC) [11:28:11:147]: Doing action: LaunchConditions
Action start 11:28:11: LaunchConditions.
MSI (s) (2C:CC) [11:28:33:662]: Product: <product> -- You must run the MSI through the setup program; you cannot run it directly.

Action ended 11:28:33: LaunchConditions. Return value 3.
Action ended 11:28:33: INSTALL. Return value 3.

Property(N): SETUPEXE = 0

Property(N): SecureCustomProperties = NETFRAMEWORK20INSTALLROOTDIR;NETFRAMEWORK35;NETFRAMEWORK35_SP_LEVEL;NEWERVERSIONDETECTED;OLDERVERSIONBEINGUPGRADED;SETUPEXE

Property(S): SecureCustomProperties = NETFRAMEWORK20INSTALLROOTDIR;NETFRAMEWORK35;NETFRAMEWORK35_SP_LEVEL;NEWERVERSIONDETECTED;OLDERVERSIONBEINGUPGRADED;SETUPEXE

Property(S): SETUPEXE = 1

私はこれについていくつかの検索をして、ログインを見ました WiLogUtl 少なくともそれを理解しました Property(N) 「ネストされた」プロパティを示しますが、MSIを直接実行しているときのネスティングが何であるかわかりません msiexec. 。その後、クライアントとサーバーの値が正しいときに、ネストされたプロパティが正しく設定されない理由がわかりません。これを解決するにはどうすればよいですか?

役に立ちましたか?

解決

私はその状態を(またはあなたのユースケースに応じて同様)に変更することを検討します)

<Condition Message="Blah blah blah">SETUPEXE or Installed</Condition> 

同様のことをします(installshield setup.exeはデフォルトでsetupexedirプロパティを渡します)。インストーラーがブートストラッパーを介して実行されていることを確認して、Prereqsがインストールされることを確認したい場合は、恐ろしいことではありません。ただし、メンテナンス /修理 /アンインストールシナリオの場合、おそらくSetup.exeの実行を要求したくないでしょう。

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