2013-03-19 63 views
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()),他們都工作,我檢查了我的日誌,但沒有任何我可以看到,可以使它出錯。每個屬性都設置爲它應該是的。

UPDATE

這裏是我的項目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是活躍的,但它是當我選擇一個不存在的應用程序。

+0

只是一個快速檢查,你的財產是否有屬性'安全=「是」設置? – 2013-03-19 16:10:47

+0

@NatalieCarr不,但我不明白爲什麼這很重要。我沒有爲應用程序的安裝目錄('WIXUI_INSTALLDIR')設置它,並且一個工作正常。 – Netfangled 2013-03-19 16:16:52

回答

0

我發現了一段時間後與它混在一起的問題。

原來我的PathEdit控制鉤住我的路徑屬性有Indirect設置爲否,而不是yes,所以它使用我的屬性的名稱作爲路徑,而不是查找它的值。

1

聽起來像你可能沒有正確解引用屬性,而是把'WEBINSTALLDIR'作爲文字路徑。

你在哪裏提到WEBINSTALLDIR

或者其他潛在的原因是權限能夠寫入該文件夾。

參考資料第一眼看起來很好。可能是權限。嘗試將條目的WEBINSTALLDIR移動到與應用程序其餘部分相同的目錄中。如果可行,那麼它可能根本無法訪問wwwroot文件夾

+0

添加了對我的文章的所有引用 – Netfangled 2013-03-19 17:40:25

+0

更新了我的答案,聽起來像它可能是權限。 – ChrisPatrick 2013-03-19 17:57:53

+0

沒有。我將我的'WEBINSTALLDIR'移動到Program Files下,也位於My Company下,但兩者都不起作用。謝謝您的幫助。 – Netfangled 2013-03-19 18:59:01

相關問題