我一直使用Wix 3.5和WixVSExtension來爲Visual Studio 2010,Visual C#2010 Express和Visual Web Developer 2010 Express安裝項目項目模板。我現在想要添加對Visual Studio 11 Beta的支持。爲Visual Studio 11註冊加載項,項目模板和項目模板
我添加註冊表搜索和自定義操作,找到VS11安裝文件夾,但是,指定目錄和組件結構的時候,我得到的編譯錯誤像這樣的:
錯誤LGHT0204:ICE30:目標文件「ewa5nwrn通過LFN系統上的兩個不同組件「'TARGETDIR] \ CSharp \'安裝.zip | BasicApplication.zip':'VS2010CSharpProjectTemplates'和'VS11CSharpProjectTemplates'。這打破了組件引用計數。
我有這樣的目錄結構:
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="VS2010_PROJECTTEMPLATES_DIR">
<Directory Id="VS2010_PROJECTTEMPLATES_CSHARP_DIR" Name="CSharp">
</Directory>
</Directory>
<Directory Id="VS11_PROJECTTEMPLATES_DIR">
<Directory Id="VS11_PROJECTTEMPLATES_CSHARP_DIR" Name="CSharp">
</Directory>
</Directory>
</Directory>
請注意,我有VS2010_PROJECTTEMPLATES_DIR和VS11_PROJECTTEMPLATES_DIR內TARGETDIR。錯誤消息顯示它們被忽略。
組件定義如下:
<DirectoryRef Id="VS2010_PROJECTTEMPLATES_CSHARP_DIR">
<Component Id="VS2010CSharpProjectTemplates" Guid="{0976A222-8243-40F2-81AB-84D8F1771840}" Transitive="yes">
<File Id="VS2010BasicApplication" Source="BasicApplication.zip" />
</Component>
</DirectoryRef>
<DirectoryRef Id="VS11_PROJECTTEMPLATES_CSHARP_DIR">
<Component Id="VS11CSharpProjectTemplates" Guid="{A70428F1-AE26-4B07-9F58-D67587B44657}" Transitive="yes">
<File Id="VS11BasicApplication" Source="BasicApplication.zip" />
</Component>
</DirectoryRef>
是否有可能安裝在同一個文件到兩個不同的目錄由properties指定?
由於提前, aalmada
我認爲使用'CopyFile'不適合te,因爲它會導致複製的文件永遠不會被卸載。我想你可以通過使用'RemoveFile'元素來處理它,但是最好使用正常的組件安裝邏輯,它應該自動處理所有這些。 – 2012-04-03 09:11:41
Wix 3.5支持在多個目錄中安裝相同的文件。您只需要爲每個引用設置不同的ID。我的問題是不同的.. –
aalmada
2012-04-03 10:54:33
Wim-這是不正確的。我們從未遇到卸載問題,並且我們支持定位2005年,2008年和2010年。關於重複文件的好處是,如果屬性從未設置爲值,它將悄悄地不做任何事情。該解決方案取代了使用瘋狂的InstallUtil自定義操作的VDPROJ instlaller,並通過了所有驗證測試並表現出色。它非常優雅。 – 2012-04-03 11:06:30