2015-12-04 140 views
0

Win7中快捷方式的开始菜单使用分层结构,而Win10中使用平面结构。我正在寻找如何在WIX安装程序项目中编写代码的帮助,该项目可在OS为Win7时创建分层快捷结构,如果操作系统为Win10则为扁平结构。Wix安装程序:如何在同一安装包中为Win7和Win10创建开始菜单快捷方式?

在WIX中,使用ID为“ProgramMenuFolder”的目录元素(例如,参见this document)定义了开始菜单快捷方式。我发现的所有文章都不会多次定义这个元素。任何时候我尝试定义此元素两次(例如在不同的片段,功能,组件内),然后我得到各种错误消息,包括蜡烛错误“”重复符号“目录:ProgramMenuFolder”找到“。如果在Win7上安装,可以使用相同的WIX内置的MSI安装程序创建分层的开始菜单快捷键结构,但是如果在Win10上安装则需要平面的开始菜单快捷键结构?如果是这样,您能否提供执行此操作所需的WIX代码的详细信息?

THANX!

伊恩

回答

0

其与操作系统版本无关。

由于Candle错误意味着您正试图在同一个项目中设置两次“ProgramMenuFolder”目录。

当您在不同片段,功能,组件内使用此目录时,请尝试使用目录属性(directory =“ProgramMenuFolder”)。

如果你想使用它作为分层结构,这个目录应该只在“TARGETDIR”目录下,对于其他所有预定义的目录都是一样的。

0

这花了一些时间,但这里是我如何解决这个问题。在使用的Win7 VS2010的安装程序,通过我的安装包(即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安装时,但随后,在Win10安装时,要使用平坦的快捷结构。这花了一些时间,但是我能够使用两个FEATURE元素(每个元素都有它自己的CONDITION元素)来完成某些工作。第一个功能使用Win7和早期操作系统的分级开始菜单快捷键结构。第二个功能使用Win8和更高版本操作系统的平面开始菜单快捷键结构。简而言之,只有当操作系统为Win7或更早版本时,第一个FEATURE元素设置“LEVEL = 0”,然后使用CONDITION元素设置“LEVEL = 1”。同样,只有当操作系统为Win8或更高版本时,第二个FEATURE元素才会设置'LEVEL = 0',然后使用CONDITION元素来设置'LEVEL = 1'。这个解决方案仍然有一些问题需要纠正,需要花费太多时间才能正确解决问题,最后我放弃了这个解决方案。

我正在尝试将Win7安装过程调整为Win10,并导致开始菜单快捷方式出现问题。解决方案是扭转我的想法,并将Win10的安装过程调整为Win7。更具体地说,对WIX进行编程以安装由Win10强加的开始菜单平面快捷键结构非常简单。这个开始菜单的平面快捷键结构也适用于Win7和早期的操作系统。所以我的解决方案只是为所有支持的操作系统使用相同的开始菜单平面快捷键结构。

谁刚开始学习维克斯:) :) :)

伊恩

从别人的悲惨的故事
相关问题