Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix安装程序:如何在同一安装包中为Win7和Win10创建开始菜单快捷方式?_Wix_Shortcuts - Fatal编程技术网

Wix安装程序:如何在同一安装包中为Win7和Win10创建开始菜单快捷方式?

Wix安装程序:如何在同一安装包中为Win7和Win10创建开始菜单快捷方式?,wix,shortcuts,Wix,Shortcuts,Win7中快捷方式的“开始”菜单使用层次结构,而Win10中的快捷方式使用平面结构。我正在寻找有关如何在WIX安装程序项目中编写代码的帮助,如果操作系统为Win7,该项目将创建分层快捷方式结构,如果操作系统为Win10,则创建平面结构 在WIX中,开始菜单快捷方式是使用ID为“ProgramMenuFolder”的目录元素定义的(例如,请参阅)。我发现的所有文章都不止一次地定义了这个元素。每当我尝试两次定义此元素时(例如,在不同的片段、功能、组件内部),就会收到各种错误消息,包括蜡烛错误“Dup

Win7中快捷方式的“开始”菜单使用层次结构,而Win10中的快捷方式使用平面结构。我正在寻找有关如何在WIX安装程序项目中编写代码的帮助,如果操作系统为Win7,该项目将创建分层快捷方式结构,如果操作系统为Win10,则创建平面结构

在WIX中,开始菜单快捷方式是使用ID为“ProgramMenuFolder”的目录元素定义的(例如,请参阅)。我发现的所有文章都不止一次地定义了这个元素。每当我尝试两次定义此元素时(例如,在不同的片段、功能、组件内部),就会收到各种错误消息,包括蜡烛错误“Duplicate symbol”目录:ProgramMenuFolder“found”

我的问题是,如果安装在Win7上,是否可以让同一个WIX内置MSI安装程序创建一个分层的开始菜单快捷方式结构,而如果安装在Win10上,是否可以创建一个平面的开始菜单快捷方式结构?如果可以,您能否提供执行此操作所需的WIX代码的详细信息

塔克斯


Ian

其与操作系统版本无关

因为烛光错误意味着您试图在同一项目中设置“ProgramMenuFolder”目录两次

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


如果要将其用作层次结构,则此目录应仅位于“TARGETDIR”目录下,与所有其他预定义目录相同。

这花了一些时间,但以下是我解决问题的方法。在使用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  
因此,我希望我的WIX安装程序在Win7上安装时使用分层/嵌套的快捷方式结构,但在Win10上安装时,使用平面快捷方式结构。虽然花了一些时间,但我能够使用两个功能元素(每个元素都有自己的条件元素)使某些功能正常工作。第一个功能使用分层快捷方式Win7和更早版本操作系统的艺术菜单快捷方式结构。第二个功能为Win8和更高版本操作系统使用平面开始菜单快捷方式结构。简言之,第一个功能元素设置“级别=0”,然后仅当操作系统为Win7或更早版本时才使用条件元素设置“级别=1”。类似地,第二个功能元素设置“级别=0”,然后使用仅当操作系统为Win8或更高版本时,才设置“LEVEL=1”的条件元素。此解决方案仍有一些问题需要纠正,需要花费太多时间才能纠正,最后我放弃了它以获得更简单的解决方案

我试图将Win7安装过程调整到Win10,这导致了“开始”菜单快捷方式的问题。解决方案是改变我的想法,将Win10的安装过程调整到Win7。更具体地说,编写WIX程序以安装Win10强制实施的“开始”菜单平面快捷方式结构非常容易。此“开始”菜单平面快捷方式结构也适用于Win7和更早版本的操作系统。因此,我的解决方案只是对所有受支持的操作系统使用相同的“开始”菜单平面快捷方式结构

一个刚开始学习WIX的人的悲惨故事:):)

伊恩