C# 每台机器的安装程序按用户操作
我使用HKLM注册表为加载项创建了“每台计算机”安装程序。C# 每台机器的安装程序按用户操作,c#,wix,installation,32-bit,wix3.5,C#,Wix,Installation,32 Bit,Wix3.5,我使用HKLM注册表为加载项创建了“每台计算机”安装程序。 我在32位机器上安装了加载项。安装它的用户具有管理员权限 注册表项添加在HKLM\SOFTWARE\Sparx Systems\EAAddins\MyAddin下,适用于所有用户,但该addin仅适用于如何安装“每台机器”安装程序的用户 对于所有其他用户,该程序不可用 有什么想法吗 编辑: 这是安装程序中的包定义: <Package Description="#Description" Comme
我在32位机器上安装了加载项。安装它的用户具有管理员权限 注册表项添加在
HKLM\SOFTWARE\Sparx Systems\EAAddins\MyAddin
下,适用于所有用户,但该addin仅适用于如何安装“每台机器”安装程序的用户
对于所有其他用户,该程序不可用
有什么想法吗
编辑:
这是安装程序中的包定义:
<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 InstallScope="perMachine" InstallPrivileges="elevated" ... />
因此,注册表项将根据安装类型放置在当前用户配置单元或本地计算机配置单元中。或者,如果您仅将其用于每台机器的安装,则可以保持原样。是否已将
程序包的InstallScope
元素设置为perMachine
?另外,请在您的问题中包含安装程序的相关部分。@Yuriy,请查看编辑后的文章,提前谢谢!这就是原因:类是按用户注册的。有什么想法吗?@user3165438,我不太明白你说的是什么意思,但是你是否尝试过将相应元素的Root
属性值更改为HKMU
?谢谢。你对香港大学是什么意思?它是所有用户的通用注册表吗?如果在安装程序中勾选“适用于所有用户”,Wix将HKMU
解析为HKLM
,如果不勾选,Wix将解析为HKCU
。但这不是问题所在-因为dll已成功地在HKLM下注册。问题是COM对象(类)是按用户注册的。如果你能看一下就好了。
<RegistryKey Root="HKMU" ... />