我一直在使用Wix 3.5和WixVSExtension来安装Visual Studio 2010,Visual C#2010 Express和Visual Web Developer 2010 Express的项目模板.我现在想添加对Visual Studio 11 Beta的支持.
我添加了注册表搜索和自定义操作来查找VS11安装文件夹但是,在指定目录和组件结构时,我遇到了类似这样的编译错误:
错误LGHT0204:ICE30:目标文件'ewa5nwrn.zip | BasicApplication.zip'由LFN系统上的两个不同组件安装在'[TARGETDIR]\CSharp \'中:'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>
Run Code Online (Sandbox Code Playgroud)
请注意,我在TARGETDIR中有VS2010_PROJECTTEMPLATES_DIR和VS11_PROJECTTEMPLATES_DIR.错误消息显示它们被忽略.
组件定义如下:
<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>
Run Code Online (Sandbox Code Playgroud)
是否可以将同一文件安装到属性指定的两个不同目录中?
在此先感谢,aalmada
我没有任何源代码可以分享,但我可以大致告诉您我过去是如何做到这一点的。
我们决定将 zip 文件“安装”到我们的主应用程序目录中的一个Integration文件夹中,这样即使在安装时尚未安装 VS2008 和/或 VS2010,这些文件也始终可用。然后,我使用 Util 扩展中存在的一堆内置属性和几个自定义 RegLocator 搜索来定义一堆与 devenv.exe 和 ItemTemplate、ProjectTemplates 以及我们在 .NET 中需要的其他目录的位置相关的属性。然后,我在 CopyFile 元素中使用这些属性,以便 MSI 可以Integration根据需要和适当的情况将文件夹中的这些文件复制到实际的 VS 目录。最后我使用 WiX QuietExec 自定义操作调用 Devenv /setup 向 VS 注册内容。我还使用了 ProgressText 元素( ActionText 表)来使 UI 看起来不错,而这一切都发生了,因为 VS devenv 可能需要一段时间。
| 归档时间: |
|
| 查看次数: |
1109 次 |
| 最近记录: |