【问题标题】:Wix installer: how to create start menu shortcuts for Win7 and Win10 in same installation package?Wix 安装程序:如何在同一个安装包中为 Win7 和 Win10 创建开始菜单快捷方式?
【发布时间】:2015-12-04 06:32:29
【问题描述】:

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

在 WIX 中,开始菜单快捷方式是使用 ID 为“ProgramMenuFolder”的 Directory 元素定义的(例如,参见 this document)。我发现的所有文章都没有多次定义这个元素。每当我尝试定义此元素两次(例如,在不同的片段、功能、组件内)时,我都会收到各种错误消息,包括 Candle 错误“找到重复符号 'Directory:ProgramMenuFolder'”。

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

谢谢!

伊恩

【问题讨论】:

    标签: wix shortcut


    【解决方案1】:

    它与操作系统版本无关。

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

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

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

    【讨论】:

      【解决方案2】:

      花了一些时间,但这是我解决问题的方法。 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  
      

      所以我希望我的 WIX 安装程序在 Win7 上安装时使用分层/嵌套快捷方式结构,但在 Win10 上安装时使用平面快捷方式结构。这花了一些时间,但我能够使用两个 FEATURE 元素来完成工作,每个元素都有自己的 CONDITION 元素。第一个 FEATURE 使用了 Win7 和更早操作系统的分层开始菜单快捷方式结构。第二个功能使用了 Win8 和更高版本操作系统的平面开始菜单快捷方式结构。简而言之,只有当操作系统是 Win7 或更早版本时,第一个 FEATURE 元素设置“LEVEL=0”,然后使用 CONDITION 元素设置“LEVEL=1”。类似地,第二个 FEATURE 元素设置“LEVEL=0”,然后使用 CONDITION 元素设置“LEVEL=1),仅当操作系统为 Win8 或更高版本时。该解决方案仍有一些问题需要纠正,需要花费太多时间才能解决问题,最后我放弃了它以寻求更简单的解决方案。

      我试图使 Win7 安装过程适应 Win10,这导致开始菜单快捷方式出现问题。解决方案是扭转我的想法,而是将Win10的安装过程调整为Win7。更具体地说,很容易编写 WIX 来安装 Win10 强加的开始菜单平面快捷方式结构。此开始菜单平面快捷方式结构也适用于 Win7 和更早的操作系统。所以我的解决方案只是对所有受支持的操作系统使用相同的开始菜单平面快捷方式结构。

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

      伊恩

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-10
        • 2021-10-25
        • 1970-01-01
        • 2011-02-13
        • 2017-11-15
        • 1970-01-01
        • 2011-01-20
        相关资源
        最近更新 更多