每台机器的安装程序与每个用户一样工作

本文关键字:工作 一样 用户 机器 安装 程序 | 更新日期: 2023-09-27 18:10:50

我为使用HKLM注册表的插件创建了一个"每台机器"安装程序。
我在一台32位机器上安装了这个插件。安装它的用户具有管理员权限。

注册表项是在HKLM'SOFTWARE'Sparx Systems'EAAddins'MyAddin下添加的,适用于所有用户,但是插件只适用于安装了"每台机器"安装程序的用户。

对于所有其他用户,该程序不可用。

任何想法?

编辑:

这是安装程序中的包定义:

    <Package Description="#Description"
             Comments="Comments"
             InstallerVersion="200"
             Compressed="yes"/>

这是注册表的定义:

<Component Id="AdminAddinsRegEntries" Guid="A8B685BF-E4B3-4D8B-A8B1-BAB845812233">
    <RegistryKey Root="HKLM" Key="Software'Sparx Systems'EAAddins'AdminAddins" Action="createAndRemoveOnUninstall">
       <RegistryValue Type="string" Value="AdminAddins.MyClass" />
    </RegistryKey>
</Component>

每台机器的安装程序与每个用户一样工作

首先,将以下属性添加到您的package元素中:

<Package InstallScope="perMachine" InstallPrivileges="elevated" ... />

perMachine
设置此值以声明该包为每台机器安装,并且需要提升特权才能安装。设置ALLUSERS属性为1。

设置此值以声明该包需要提升权限才能安装。<一口>

其次,可以将RegistryKeyRoot值改为HKMU:

<RegistryKey Root="HKMU" ... />

以便根据安装类型将注册表项放置在当前用户或本地机器单元中。或者,如果您只在每台机器安装时使用它,则可以保持原样。