0

変更モードでインストール/アンインストールする機能を知る必要がある状況があるため、ダイアログシーケンスを変更できます。

私のセットアップには2つの機能F_WEB_APPF_DATABASEが含まれています。私の生活を楽にするために、カスタマイズダイアログの次のボタンで次のプロパティを公開し、機能の条件に基づいてインストール、インストール、またはアンインストールする機能を次のように識別します。

<Publish Dialog="CustomizeDlg" Control="Next" Property="IsDBInstalled" Value="Yes" Order="5"><![CDATA[!F_DATABASE > 2]]></Publish>
<Publish Dialog="CustomizeDlg" Control="Next" Property="IsDBInstalled" Value="No"  Order="6"><![CDATA[!F_DATABASE < 3]]></Publish>

<Publish Dialog="CustomizeDlg" Control="Next" Property="IsWebInstalled" Value="Yes" Order="7"><![CDATA[!F_WEB_APP > 2]]></Publish>
<Publish Dialog="CustomizeDlg" Control="Next" Property="IsWebInstalled" Value="No" Order="8"><![CDATA[!F_WEB_APP < 3]]></Publish>                

<Publish Dialog="CustomizeDlg" Control="Next" Property="IsDBSelected" Value="Yes" Order="9"><![CDATA[&F_DATABASE > 2]]></Publish>
<Publish Dialog="CustomizeDlg" Control="Next" Property="IsDBSelected" Value="No" Order="10"><![CDATA[&F_DATABASE < 3]]></Publish>

<Publish Dialog="CustomizeDlg" Control="Next" Property="IsWebSelected" Value="Yes" Order="11"><![CDATA[&F_WEB_APP > 2]]></Publish>
<Publish Dialog="CustomizeDlg" Control="Next" Property="IsWebSelected" Value="No" Order="12"><![CDATA[&F_WEB_APP < 3]]></Publish>

最初のインストールでは、すべてのプロパティがユーザーの選択(予想される動作)に従って設定されますが、変更/変更中は一度だけ設定されます(カスタマイズダイアログの最初のロード時-値はユーザーの変更に関係なく既存の状態と一致します)!ユーザーが変更を加えて[次へ]を押すか、次に進んでから戻って選択した機能を変更して[次へ]をクリックすると、どのプロパティも設定されません...ここで何が問題になっていますか?

最初のインストールのログ(読みやすくするためにトリミング):

Action 20:34:08: CustomizeDlg. Dialog created
* user modify features and press next.
MSI (c) (94:90) [20:34:09:374]: PROPERTY CHANGE: Adding IsDBInstalled property. Its value is 'No'.
MSI (c) (94:90) [20:34:09:376]: PROPERTY CHANGE: Adding IsWebInstalled property. Its value is 'No'.
MSI (c) (94:90) [20:34:09:378]: PROPERTY CHANGE: Adding IsDBSelected property. Its value is 'Yes'.
MSI (c) (94:90) [20:34:09:379]: PROPERTY CHANGE: Adding IsWebSelected property. Its value is 'Yes'.
Action 20:34:09: NextDlg. Dialog created
* user press back.
Action 20:34:09: CustomizeDlg. Dialog created
* user modify features and press next.
MSI (c) (94:90) [20:34:12:376]: PROPERTY CHANGE: Modifying IsWebSelected property. Its current value is 'Yes'. Its new value: 'No'.
Action 20:34:12: NextDlg. Dialog created
* user press back.
Action 20:34:13: CustomizeDlg. Dialog created
* user modify features and press next.
MSI (c) (94:90) [20:34:15:129]: PROPERTY CHANGE: Modifying IsDBSelected property. Its current value is 'Yes'. Its new value: 'No'.
Action 20:34:15: NextDlg. Dialog created
* user press back.
Action 20:34:15: CustomizeDlg. Dialog created
* user modify features and press next.
MSI (c) (94:90) [20:34:18:289]: PROPERTY CHANGE: Modifying IsWebSelected property. Its current value is 'No'. Its new value: 'Yes'.
Action 20:34:18: NextDlg. Dialog created

変更/変更のログ(読みやすくするためにトリミング):

Action 21:01:41: CustomizeDlg. Dialog created
* user modify features and press next.
MSI (c) (6C:1C) [21:01:45:216]: PROPERTY CHANGE: Adding IsDBInstalled property. Its value is 'Yes'.
MSI (c) (6C:1C) [21:01:45:220]: PROPERTY CHANGE: Adding IsWebInstalled property. Its value is 'Yes'.
MSI (c) (6C:1C) [21:01:45:223]: PROPERTY CHANGE: Adding IsDBSelected property. Its value is 'No'.
MSI (c) (6C:1C) [21:01:45:225]: PROPERTY CHANGE: Adding IsWebSelected property. Its value is 'No'.
Action 21:01:45: NextDlg. Dialog created
* user press back.
Action 21:01:45: CustomizeDlg. Dialog created
* user modify features and press next.
Action 21:01:48: NextDlg. Dialog created
* user press back.
Action 21:01:49: CustomizeDlg. Dialog created
* user modify features and press next.
Action 21:01:51: NextDlg. Dialog created
* user press back.
Action 21:01:52: CustomizeDlg. Dialog created
* user modify features and press next.
Action 21:01:54: NextDlg. Dialog created

2番目のログからわかるように、プロパティの変更は記録されていません。ここで欠落しているのは何ですか。

ありがとう。

4

1 に答える 1

1

何時間も読んだ後、手ぶらで出てきました!私はこれに対する解決策をどこにも見つけることができませんでした。

良いニュースは、私が自分で解決策を見つけたということです(理想的ではありません)が、それはうまくいきます!!!!

すべての機能にはいくつかのコンポーネントがリンクされていますが、機能とともに常に存在する無条件のコンポーネント(レジストリコンポーネントなど)が少なくとも1つあります。機能のリクエスト/アクションの状態を更新することを諦めた後、コンポーネントを試しましたリクエスト/アクションの状態..そしてはい、それは更新されます。

したがって、次のように、機能要求/アクション状態ではなく、コンポーネント要求/アクション状態に基づいて条件を設定しました。

<!--If one of Database feature required components request state is Local or Source or Default. it means install.-->
<Publish Dialog="CustomizeDlg" Control="Next" Property="InstallDatabase" Value="1" Order="5"><![CDATA[$CMP_DATABASE_REGISTRY > 2]]></Publish>
<!--else clear the propery.-->
<Publish Dialog="CustomizeDlg" Control="Next" Property="InstallDatabase" Order="6"><![CDATA[$CMP_DATABASE_REGISTRY < 3]]></Publish>

<!--If one of Database feature required components request state is Absent. it means uninstall.-->
<Publish Dialog="CustomizeDlg" Control="Next" Property="UninstallDatabase" Value="1" Order="7"><![CDATA[$CMP_DATABASE_REGISTRY = 2]]></Publish>
<!--else clear the property .-->
<Publish Dialog="CustomizeDlg" Control="Next" Property="UninstallDatabase" Order="8"><![CDATA[$CMP_DATABASE_REGISTRY <> 2]]></Publish>


<!--If one of WebApp feature required components request state is Local or Source or Default. it means install.-->
<Publish Dialog="CustomizeDlg" Control="Next" Property="InstallWebApp" Value="1" Order="9"><![CDATA[$CMP_WEB_APP_REGISTRY > 2]]></Publish>
<!--else clear the propery.-->
<Publish Dialog="CustomizeDlg" Control="Next" Property="InstallWebApp" Order="10"><![CDATA[$CMP_WEB_APP_REGISTRY < 3]]></Publish>

<!--If one of WebApp feature required components request state is Absent. it means uninstall.-->
<Publish Dialog="CustomizeDlg" Control="Next" Property="UninstallWebApp" Value="1" Order="11"><![CDATA[$CMP_WEB_APP_REGISTRY = 2]]></Publish>
<!--else clear the property .-->
<Publish Dialog="CustomizeDlg" Control="Next" Property="UninstallWebApp" Order="12"><![CDATA[$CMP_WEB_APP_REGISTRY <> 2]]></Publish>

:ユーザーが選択ツリーに変更を加えなかった場合、機能コンポーネントのアクション/要求の状態は不明=-1になります。

これで、上記のプロパティを使用して、変更/変更モードでダイアログを順番に並べることができます。

<!--collect WebApp setting if WebApp to be installed, WebAppDlg will handle where to go next.-->
<Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="WebAppDlg" Order="13"><![CDATA[Installed AND InstallWebApp]]></Publish>
<!--collect Database setting if WebApp not to be installed and Database to be installed or uninstalled, DatabaseDlg will handle where to go next.-->
<Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="DatabaseDlg" Order="14"><![CDATA[Installed AND NOT InstallWebApp AND (InstallDatabase OR UninstallDatabase)]]></Publish>
<!--user made no changes go to verify ready dialog.-->
<Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="15"><![CDATA[Installed AND NOT InstallWebApp AND NOT InstallDatabase]]></Publish>
于 2012-05-09T08:07:42.010 に答える