2014-02-21 40 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> 
相关问题