是否可以为每个用户MSI提供广告快捷方式和ProgId?

时间:2014-01-31 21:06:53

标签: wix windows-installer windows-vista windows-xp-sp3 wix3.8

我有一个permachine MSI安装程序,我正在转换为将用户文件安装到LocalAppDataFolder的每个用户安装程序。

为了摆脱ICE38警告,我添加了一个注册表作为keypath。问题出在我的一个组件中,我有一个广告的快捷方式和ProgId。

我现在要:

  • ICE19 - 'settings'通告组件:'CMP_Rapid'。由于KeyPath类型不允许,因此无法公布此组件
  • ICE19 - 快捷方式:'SHC_RunConfigExe'通告组件:'CMP_Rapid'。无法公布此组件,因为KeyPath类型不允许它。
  • ICE50 - 组件'CMP_Rapid'有一个广告的快捷方式,但找不到KeyPath。

在安装到LocalAppDataFolder时,是否仍然按用户安装做广告?我对广告并不熟悉。在我使用它的快捷方式,因为我喜欢它提供的修复功能。在progId我使用它,因为它在安装后自动更新相应的图标。

我需要在XP和Vista上安装它,以便我可以使用Windows 7解决方案:ProgramFilesFolder重定向。

以下是生成错误的组件:

<DirectoryRef Id="INSTALL_FOLDER">
      <Component Id="CMP_Rapid"
                 Guid="{9373A11C-5A3C-49E3-963D-C19B765A4285}">

        <File Id="FILE_Rapid"
              Source="$(var.FilePath)\Dynagen Configurator.exe">
        </File>

        <Shortcut Id="SHC_RunConfigExe"
                Name="DYNAGEN Configurator"
                Description="Opens DYNAGEN Configurator application." 
                Directory="ConfigShortCutDir"
                WorkingDirectory="INSTALL_FOLDER"
                Icon="ICO_RunConfigExe.exe"
                Advertise="yes"/>

        <ProgId Id="Rapid.drcS" Icon="ICO_drcS.ico" Advertise="yes">
          <Extension Id="settings">
            <Verb Id="Open" Command="Open" Argument="/so &quot;%1&quot;" />
            <Verb Id="Edit" Command="Edit" Argument="/edit &quot;%1&quot;"/>
            <Verb Id="Program" Command="Program" Argument="/program &quot;%1&quot;"/> 
          </Extension>
        </ProgId>

        <RegistryValue Root="HKCU"
                       Key="Software\Dynagen\DynagenConfigurator"
                       Name="CMP_Rapid"
                       Type="integer"
                       Value="1"
                       KeyPath="yes"
                       />

      </Component>
    </DirectoryRef>

1 个答案:

答案 0 :(得分:1)

通过使密钥路径错误的注册表项来满足ICE38。正确的做法是忽略ICE38错误,但进入wix属性页面并在“抑制特定ICE验证”旁边添加ICE38和ICE91。

Microsoft或Wix对纯每用户安装没有理想的支持。我甚至无法在网上找到任何好的例子。

位于WiX-users@lists.sourceforge.net的Bryan帮助我解决了这个问题:

  

既然如此,ICE38(在我看来)是不正确的,你会想忽略它。 ICE38意味着您在每台计算机安装的上下文中安装每用户资源,但从未验证过是这样。

     

实际上,为每个用户安装创作需要您忽略ICE38,因为它对于那个世界来说是不准确的。

有一次我忽略了上述情况。

<强> [编辑]

同样请参阅my answer here。事实证明,您需要注意一些边缘情况。