我正在使用Wix Toolset 3.8 Visual Studio加載項。我已經創建了一個WIX安裝程序庫,它封裝了將由各種服務部署項目使用的一些通用組件。該庫包含對需要打包到每個部署中的幾個解決方案文件的引用。如何維護WIX設置庫中的文件參考完整性
這些依賴於我的WiX的文庫片段用在幾個不同的方式。例如:
<Binary Id="InstallationScript" SourceFile=".\Dependency1.vbs" />
<CustomAction Id="DependencyAction"
BinaryKey="InstallationScript"
VBScriptCall=""
Execute="deferred"
Return="check"
HideTarget="no"/>
<Component Id="DLL_Component" Guid="4745D9E2-0EBA-EE57-D8DB-677ADA9E9EC8">
<File Id="DLL1" Name="Dependency1.DLL" Source=".\Dependency1.dll" Vital="yes" KeyPath="yes" DiskId="1"/>
</Component>
的維克斯設置圖書館建立精細是否我將文件添加到該項目爲紐帶,或將它們複製到項目目錄,以及我是否引用它們在項目目錄,或使用相對路徑他們的原始位置。當我爲我的服務部署在我的WIX安裝項目中包含片段時,問題就出現了。
<Custom Action="DependencyAction" Before="InstallFinalize">
NOT INSTALLED AND NOT UPGRADINGPRODUCTCODE
</Custom>
安裝項目是不是在文件夾結構相同的相對深度,從而從維克斯庫引用時它的相對路徑沒有指向同一個地方。當我參考WIX庫中的動作或功能時,出現錯誤,如The system cannot fine the file '.\Dependency1.dll'
正在按照原樣讀取XML,並從Setup Project位置而不是從Library Project位置引用XML,因此相對目錄錯誤。我可以將WIX庫中的相對路徑設置爲使用它的Setup Project的相對路徑,或者我也可以將解決方案文件複製到Setup Project目錄中,但當然,這完全違背了使用常見的WIX庫。還有其他服務部署項目需要使用此庫。
所以問題是,無論安裝項目所在的目錄如何,我都可以使用WIX庫中的解決方案文件的方式來使用安裝項目。
啊...我找到了「將文件綁定到庫文件」複選框Build選項卡的底部,看到它將BindFiles和LibBindFiles屬性添加到項目文件中,並發現Votive = Visual Studio加載項。這種聯繫正如我現在所期望的那樣工作。 .wixlib較大,表示文件被綁定在裏面。更重要的是,Source參考僅在構建.wixlib時相關。當相關項目引用功能,組件或操作時,無論此項目的相對位置如何,它們都會自動鏈接。 –
對於其他可能有同樣問題的人......我發現項目屬性「構建選項卡」不一致地顯示「將文件綁定到庫文件」複選框。我在VS2010和VS2012中看到了同樣的問題。如果窗口足夠小,垂直方向需要滾動條,則無法向下滾動以查看此複選框。但是,如果您給窗口足夠的空間以至於不需要滾動條,則複選框將顯示在底部。或者,編輯項目文件並手動將屬性添加到調試和發佈PropertyGroup節點。 –
請爲此提交一個錯誤。我不確定如果在Visual Studio中有問題,我們可以修復它,但滾動應該可以工作。 –