0

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 がアクティブな間は言及されていないことに気付きましたが、存在しないアプリケーションを選択した場合です。

4

2 に答える 2

1

プロパティを正しく逆参照しておらず、代わり'WEBINSTALLDIR'にリテラル パスとして扱っているようです。

どこを参照していますWEBINSTALLDIRか?

または、他の潜在的な理由は、そのフォルダーに書き込むことができるアクセス許可です。

参考文献は一見問題ないように見えます。権限である可能性があります。DirectoryのエントリをWEBINSTALLDIRアプリの残りの部分と同じディレクトリに移動してみてください。それが機能する場合、おそらく単にwwwrootフォルダーにアクセスできません

于 2013-03-19T17:29:12.787 に答える
0

しばらくいじってから問題を見つけました。

PathEditパス プロパティにフックされたコントロールがIndirect、yes ではなく no に設定されていたため、値を検索する代わりに、プロパティの名前をパスとして使用していたことが判明しました。

于 2013-03-20T18:00:01.977 に答える