尝试为我的MSI制作patch.msp并尝试安装此补丁。但它要求管理员权利。 1)在我的实际MSI安装期间,它不会要求管理员权限。 2)但是在Patch安装/更新期间,它要求管理员权限。
我们有没有办法在没有管理员权限的情况下安装/更新补丁?
以下是我的Patch.wxs
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'
xmlns:util='http://schemas.microsoft.com/wix/UtilExtension'>
<Patch
AllowRemoval="yes"
Classification="Update"
Comments="Patch for FooTesting Software V 1.0.0"
Description="Update for Foo Testing Software V 1.0.0"
DisplayName="Foo Testing Patch"
Manufacturer="Foo Inc."
TargetProductName="Foo testig">
<Media Id="1000" Cabinet="FooTesting.cab">
<PatchBaseline Id="FooTesting" />
</Media>
<PatchFamily
Id="MyPatchFamily"
Version="1.0.1"
ProductCode="44139BED-5F1A-4C1E-BE12-C7148BE11189"
Supersede="yes"/>
</Patch>
答案 0 :(得分:1)
有一些方法可以做到这一点,在这里:
https://msdn.microsoft.com/en-us/library/aa372388(v=vs.85).aspx
但是如果产品已经发货且您没有签收,则为时已晚,答案是否定的。您的原始MSI安装在安装时没有提升?这很奇怪,但没有细节,很难评论为什么会发生这种情况,以及为什么你的补丁会这样做。
答案 1 :(得分:0)
正如PhilDW指出的那样,这可以通过用户帐户控制修补(UAC补丁,以前称为“LUA补丁”)来完成。
虽然MS官方不支持在服务器操作系统上进行安装,但它可以进行一些调整(注册表项)。不洁净,但有时你需要那些东西。
另外一个想法: 提供一个特殊的非常小的补丁(虽然需要管理员自己的权限)可以启用正确签名的其他(未来)补丁,无需管理员权限即可安装,即使你的产品设置已经发货。 (该特殊补丁可以由域管理员/工具提供,然后使其方便使用。) 做完了。工作得很好。
这根本不是不洁净的。相反:如果您交付的软件的使用寿命是几年或几十年,则需要使用相同的特殊补丁:换句话说,如果您公司的证书即将到期,通常每1 - 3年会发生一次。
由于: 过期的证书仍可用于较早发布的补丁,但会阻止您构建使用该证书签名的新补丁。所以你需要一个新的证书,你的旧交付产品不知道......,这就是为什么你需要一个特殊的“证书启用”补丁来解决这种情况。完成那个..
但是知道所有已知的2015年证书的现实世界证券收益有点被高估了。但这是我们能够做的少数事情之一,所以...
微软有第二种官方方法称为“提升补丁”。它的使用很少,通过阅读官方文档,它仅限于每用户应用程序。基本上你可以说:一个位于这个特殊驱动器和路径上的补丁必须是“安全的”。不像证书那么安全,但是......你已经阅读了我的评论。
https://msdn.microsoft.com/en-us/library/aa370582%28v=vs.85%29.aspx
我不会再评论这个,因为: 所有提到的方法都只能推荐给MSI专家,或者如果您有一名顾问。
第三:
公司常见的方式是,如果他们没有MSI专家知识,或者需要安装完整的MSI,也没有提升权利或花费很多钱就是编写完整的安装/更新服务或者通过他们的管理员和他们的脚本来处理这些事情。
再次发出安全说明 - 关于第三种方法: 当然,从用户的角度来看,每个一直运行并且必须具有提升权限的更新服务会降低安全性。但是,当我查看哪些更新时,如果是自动的,我每周都被迫为每台连接互联网的机器安装(从微软的更新开始,由防病毒软件开始,这被称为最好的黑客之门,以及公司从“A”开始,“较小”公司的小型更新服务实际上对安全性没有太大影响。