是否可以为每个用户的MSI公布快捷方式和ProgId? [英] Is it possible to have advertised shortcuts and ProgId for a per user MSI?

查看:97
本文介绍了是否可以为每个用户的MSI公布快捷方式和ProgId?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Permachine MSI安装程序,正在将其转换为一个将用户文件安装到LocalAppDataFolder的按用户安装程序.

I have a permachine MSI installer that I'm converting to a per user installer that is installing files to the LocalAppDataFolder.

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

To get rid of ICE38 warnings I added a registry as the keypath. The problem is in one of my components I have a advertised shortcut and ProgId.

我现在得到:

  • ICE19-设置"广告组件:"CMP_Rapid".不能发布此组件,因为KeyPath类型不允许使用它
  • ICE19-快捷方式:"SHC_RunConfigExe"广告组件:"CMP_Rapid".此组件不能发布,因为KeyPath类型不允许它.
  • ICE50-组件'CMP_Rapid'具有公告的快捷方式,但找不到KeyPath.

在安装到LocalAppDataFolder时,是否有广告宣传每个用户的安装?我对广告不那么熟悉.在快捷方式上,我使用它是因为我喜欢它提供的修复功能.我在progId上使用它,因为它在安装后会自动更新相应的图标.

Is there anyway to advertise in per user installs when installing to the LocalAppDataFolder? I'm not that familiar with advertising. On the shortcut I use it because I like the repair functionality it offers. On the progId I use it because it automatically updates the appropriate icons after an install.

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

I need to install this on XP and Vista so I can use the Windows 7 solution: ProgramFilesFolder redirection.

下面是生成错误的组件:

Below is the component that generates the errors:

<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>

推荐答案

通过将注册表项设置为密钥路径错误,可以满足ICE38的要求.正确的做法是忽略ICE38错误,但进入wix属性页面,并在禁止特定的ICE验证"旁边添加ICE38和ICE91.

Turns out satisfying ICE38 by making a registry key the keypath is wrong. The proper thing to do is to ignore the ICE38 error but going going into the wix properties page and add ICE38 and ICE91 beside "Suppress specific ICE validation.

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

Microsoft or Wix doesn't have ideal support for pure per-user installs. I couldn't even find any good examples online.

WiX-users@lists.sourceforge.net上的布莱恩(Bryan)帮助我解决了此问题:

Bryan at WiX-users@lists.sourceforge.net helped me out on this:

既然是这种情况,(我认为)ICE38是不正确的,您将希望忽略它. ICE38意味着您是在每台计算机的安装上下文中安装每用户资源,但从未验证过这样做.

Since that is the case, ICE38 is (in my opinion) incorrect and you will want to ignore it. ICE38 implies you are installing per-user resources in the context of a per-machine installation but never verifies that this is so.

实际上,为每个用户编写安装都需要您忽略ICE38,因为它在那个世界上永远都不准确.

Actually authoring a per-user install requires that you ignore ICE38 because it won't ever be accurate for that world.

一旦我忽略了上面的方法.

Once I ignored that the above worked.

也请参见在这里我的答案.原来,您需要注意一些极端情况.

See my answer here as well. Turns out there is some edge cases you need to be aware of.

这篇关于是否可以为每个用户的MSI公布快捷方式和ProgId?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆