2015-12-04 56 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和早期的操作系統。所以我的解決方案只是爲所有支持的操作系統使用相同的開始菜單平面快捷鍵結構。

誰剛開始學習維克斯:) :) :)

伊恩

從別人的悲慘的故事
相關問題