我使用WiX创建了一个安装程序来安装VSIX以及两个相关组件。这两个组件以Merge Modules的形式提供给我。下面是我在代码中使用合并模块的代码:
<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”。
答案 0 :(得分:2)
您可能需要稍微澄清一下这个问题。没有安装合并模块,只安装文件,所以你的意思是合并模块中的文件出错了,是吗?此外,文件未安装在他们到达磁盘上某个位置的用户帐户上。
通过这种方式猜测,您可能会说这些文件已安装到安装用户的用户应用程序数据位置。如果这是合并模块在其内部指定的内容,那是正常的。显然,即使您正在安装每台计算机,也可以将文件安装到当前用户的应用程序数据文件夹中。我不能说这些合并模块是否设计正确,但如果它们是:
简短的回答是,这可能都是按预期工作的。
答案 1 :(得分:0)
设置ALLUSERS很好。
您所描述的内容看起来像“广告”。
要删除合并模块的广告,请将AllowAdvertise =“no”添加到包含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>