【问题标题】:Is it possible to have advertised shortcuts and ProgId for a per user MSI?是否可以为每个用户 MSI 发布快捷方式和 ProgId?
【发布时间】:2014-01-31 21:06:53
【问题描述】:

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

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

我现在得到:

  • ICE19 - “设置”广告组件:“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>

【问题讨论】:

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


    【解决方案1】:

    结果是通过将注册表项设置为键路径错误来满足 ICE38。正确的做法是忽略 ICE38 错误,但进入 wix 属性页面并在“禁止特定 ICE 验证”旁边添加 ICE38 和 ICE91。

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

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

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

    实际上,按用户安装需要您忽略 ICE38,因为它对于那个世界永远不会准确。

    一旦我忽略了上面的工作。

    [编辑]

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-14
      • 1970-01-01
      • 2022-01-18
      • 2014-06-15
      • 2021-09-06
      • 1970-01-01
      相关资源
      最近更新 更多