2014-02-21 41 views
0

我使用WiX創建了一個安裝程序,以安裝VSIX以及兩個相關組件。這兩個組件以合併模塊的形式提供給我。下面是我使用的合併模塊在我的代碼代碼:爲所有使用WiX的用戶安裝合併模塊

<DirectoryRef Id="TARGETDIR"> 
    <Merge Id="MergeModuleID1" SourceFile="MergeModule1.msm" DiskId="1" Language="0"/> 
    <Merge Id="MergeModuleID2" SourceFile="MergeModule2.msm" DiskId="1" Language="0" /> 
</DirectoryRef> 

和我提到這些合併模塊爲:

<Feature Id="ProductFeature" Title="Title" Level="1"> 
    <ComponentRef Id="VSPackage"/> 
    <ComponentRef Id="ApplicationShortcut"/> 
    <ComponentRef Id="DesktopShortcut"/> 
    <ComponentRef Id="LicenseComp"/> 
    <MergeRef Id="MergeModuleID1"/> 
    <MergeRef Id="MergeModuleID2"/> 
</Feature> 

我面臨的問題是,我的VSIX是安裝到機器上的所有用戶帳戶,但這些合併模塊不是,它們僅安裝在安裝產品的用戶帳戶上。在其他用戶帳戶上,出現一個安裝對話框,我相信這是安裝這些合併模塊,之後一切正常。 如何讓這些合併模塊安裝到所有用戶?

P.S:MSI和合並模塊中的ALLUSERS屬性都設置爲'1'。

回答

2

您可能需要澄清一些問題。合併模塊沒有安裝,只是文件,所以你的意思是合併模塊中的文件不正確,是嗎?另外,文件不會安裝在他們到達磁盤位置的用戶帳戶中。

通過猜測我的方式,你可能會說文件被安裝到某個地方,比如安裝用戶的用戶應用程序數據位置。如果這就是合併模塊在其內部指定的內容,那很正常。即使您在進行每臺計算機的安裝,您也可以將文件安裝到當前用戶的應用程序數據文件夾中。我不能說這些合併模塊是否設計正確,但如果它們是:

  1. 初始安裝將把這些文件放在安裝用戶文件位置。
  2. 如果其他用戶登錄並使用快捷方式並正確設計了MSI,則按需安裝功能會將該用戶的這些文件安裝到該用戶的文件夾中,可能會詢問原始安裝介質。這是因爲: a)沒有任何機制允許文件同時安裝到系統上的所有用戶文件位置,如果它們從不使用該應用程序,它就沒有任何意義。 b)如果您在產品安裝後創建新的用戶帳戶,會發生什麼情況?該文件不會位於該用戶的位置,但是按需安裝方案可確保此新用戶在登錄並使用該應用程序時將該文件置於其位置。

簡而言之,這可能是所有工作都按預期進行。

0

設置ALLUSERS很好。

你所描述的看起來像「廣告」。

要爲合併模塊刪除廣告,添加AllowAdvertise =「否」,以含有MergeRef元件要素的屬性:

<Feature Id="ProductFeature" Title="Title" AllowAdvertise="no" Level="1"> 
    <ComponentRef Id="VSPackage"/> 
    <ComponentRef Id="ApplicationShortcut"/> 
    <ComponentRef Id="DesktopShortcut"/> 
    <ComponentRef Id="LicenseComp"/> 
    <MergeRef Id="MergeModuleID1"/> 
    <MergeRef Id="MergeModuleID2"/> 
</Feature> 
相關問題