Win7中快捷方式的“开始”菜单使用层次结构,而Win10中的“开始”菜单使用平面结构。我正在寻找关于如何在WIX安装程序项目中编写代码的帮助,该项目如果操作系统是Win7,则创建分层快捷结构,如果操作系统是Win10,则创建扁平结构。
在WIX中,开始菜单快捷方式是使用ID为'ProgramMenuFolder‘的目录元素定义的(例如,请参阅this document)。我找到的所有文章都不会多次定义这个元素。任何时候,我试图定义这个元素两次(例如,在不同的片段,功能,组件中),然后我得到各种错误消息,包括Candle错误""Duplicate symbol 'Directory:ProgramMenuFolder‘found“。
我的问题是,如果在Win7上安装,是否有可能让相同的WIX构建的微星安装程序创建分层的开始菜单快捷结构,但如果在Win10上安装,则创建平面开始菜单快捷结构?如果是这样,您能提供执行此操作所需的WIX代码的详细信息吗?
ThanX!
伊恩
发布于 2015-12-05 00:07:53
它与操作系统版本无关。
正如Candle error所暗示的,您正试图在同一项目中设置两次"ProgramMenuFolder“目录。
当您在不同的片段、功能、组件中使用此目录时,会尝试使用目录属性(directory = "ProgramMenuFolder")。
如果你想使用它作为层次结构,这个目录应该只在"TARGETDIR“目录下,所有其他预定义的目录都是一样的。
发布于 2015-12-06 08:46:36
这花了一些时间,但以下是我如何解决这个问题的。在使用VS2010安装程序的Win7中,我的安装包(即MSI文件)添加的快捷方式嵌套如下:
All Programs
CompanyName
ProductName
Version#
App.exe
App.exe.config
App.pdf
问题是Win10不支持上面的分层/嵌套结构。你能得到的最好的结果是一个扁平的结构,如下所示:
All Programs
Product Name - Version#
App.exe
App.exe.config
App.pdf
因此,当在Win7上安装时,我希望我的WIX安装程序使用分层/嵌套快捷方式结构,但是在Win10上安装时,我希望使用平面快捷方式结构。这花了一些时间,但我能够使用两个功能元素,每个功能元素都有自己的条件元素来工作。第一个功能对Win7和更早版本的操作系统使用分层开始菜单快捷结构。第二个功能对Win8和更高版本的操作系统使用平面开始菜单快捷结构。简而言之,第一个功能元素设置“LEVEL=0”,然后仅当操作系统是Win7或更早版本时才使用条件元素设置“LEVEL=1”。类似地,第二个功能元素设置了'LEVEL=0‘,然后使用CONDITION元素设置了'LEVEL=1),只有在操作系统是Win8或更高版本的情况下。这个解决方案仍然有一些问题需要纠正,需要花费太多的时间才能正确,最后我为了一个更简单的解决方案而放弃了它。
我试图使Win7安装过程适应Win10,但这导致了开始菜单快捷方式的问题。解决方案是改变我的想法,改为将Win10的安装过程调整为Win7。更具体地说,很容易将WIX编程为安装由Win10强加的开始菜单平面快捷结构。这种开始菜单平面快捷键结构也适用于Win7和更早的操作系统,所以我的解决方案就是对所有支持的操作系统使用相同的开始菜单平面快捷键结构。
刚开始学习WIX的人的悲哀故事:):)
伊恩
https://stackoverflow.com/questions/34082263
复制相似问题