Visual Studio 2012 に、アプリケーション、サーバー、またはその両方をインストールする選択肢をユーザーに与える WiX プロジェクトがあります。私の問題は、ユーザーが両方を選択したときです。
次のようなディレクトリ ツリーがあります。
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="Company" Name="My company">
<Directory Id="INSTALLDIR" Name="My application"/>
</Directory>
</Directory>
<Directory Id="inetpub" Name="inetpub">
<Directory Id ="WEBINSTALLDIR" Name="wwwroot"/>
</Directory>
</Directory>
すべてがそれぞれのフォルダーにダンプされます。サーバーのファイルをインストールする場所を選択するために、基本的に InstallDirDlg と BrowseDlg のコピーを別のプロパティ名で作成しました。これらは、ユーザーが IIS で新しい仮想アプリケーションを作成することを選択した場合にのみ表示されます (既存のアプリケーションを選択した場合、カスタム アクションはその物理パスを取得するだけです)。
新しいアプリケーションを作成することを選択したときに次のボタンをクリックするまで、すべてが正常に機能します。セットアップがしばらくハングし (既存のアプリケーションを選択した場合はハングしません)、致命的なエラー メッセージThe specified path 'WEBINSTALLDIR' is unavailable.
(エラー 1314)が表示されます。
すべてのカスタム アクション (System.Diagnostics.Debugger.Launch()) をデバッグし、それらはすべて機能し、ログを確認しましたが、問題が発生する可能性があるものは何もありません。すべてのプロパティは、本来あるべきものに設定されています。
アップデート
WEBINSTALLDIR
私のプロジェクトでのすべての参照は次のとおりです(およびWIXUI_WEBINSTALLDIR
、に相当するWIXUI_INSTALLDIR
、および_WebBrowseProperty
、に相当する_BrowseProperty
):
<Property Id="WIXUI_WEBINSTALLDIR" Value="WEBINSTALLDIR"/>
...
<Control Id="PhysicalPath" Type="PathEdit" X="20" Y="160" Width="320" Height="18" Property="WIXUI_WEBINSTALLDIR" Indirect="no" />
...
<Feature Id="Server" /*snip*/ ConfigurableDirectory="WEBINSTALLDIR">
...
<ComponentGroup Id="Server" Directory="WEBINSTALLDIR">
...
<Property Id="_WebBrowseProperty" Value="WEBINSTALLDIR"/>
...
<Publish Dialog="WebInstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_WEBINSTALLDIR]" Order="1">1</Publish>
<Publish Dialog="WebInstallDirDlg" Control="ChangeFolder" Property="_WebBrowseProperty" Value="[WIXUI_WEBINSTALLDIR]" Order="1">1</Publish>
更新 2
WEBINSTALLDIR
ログで、存在するアプリケーションを使用すると、UI がアクティブな間は言及されていないことに気付きましたが、存在しないアプリケーションを選択した場合です。