如何从每个用户更改为所有用户安装? [英] how to change from per user to all user installation?

查看:996
本文介绍了如何从每个用户更改为所有用户安装?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于我们的msi,我们没有在现有版本中提及allusers属性.因此默认情况下,它是按用户使用的.

For our msi , we did not mention allusers property in existing releases. so by default it went as per user.

我们的客户使用管理员用户ID安装了该应用程序,而该管理员离开了公司.因此,他的用户ID不再处于有效状态.

Our customers installed the application using an admin user id and that admin left the company. So his user id is no more in valid condition.

现在,他们无法使用另一个管理员帐户(因为它是按用户安装的)迁移到较新版本.

Now they are unable to migrate to newer version using another admin account (as it was installed as per user).

尽管我们可以更改msi以支持所有用户,但它在迁移(主要升级)中不起作用.

Though we can change our msi to support allusers ,it would not work in migration (major upgrade).

似乎只有当我们提供不支持现有版本的全新发行版时,我们才能解决此问题.

It seems like only when we give total new release where no existing release is supported we can fix the issue.

即使先前的msi是每个用户,是否还有其他解决方法要提一下,现在应该对其进行重大升级?

Is there any other workaround there to mention even if the previous msi was per user ,it should be major upgraded now?

我们在安装过程中使用的是WIX 3.5.

We are using WIX 3.5 for our installation process.

推荐答案

不幸的是,Windows安装程序不支持跨上下文"升级.如您所见,每台机器的软件包无法升级每用户的软件包,而每用户的软件包也无法升级每台计算机的软件包.

Unfortunately, the Windows installer does not support upgrading "across contexts". As you found a per-machine package cannot upgrade a per-user package and a per-user package cannot upgraded a per-machine package.

您可以编写一个可执行文件,该文件查找旧的.msi并使用::MsiEnumRelatedProducts()之类的API卸载它们,以找到产品,然后使用::MsiConfigureProduct()删除它们.但是,如果没有用户帐户,我不确定您是否可以看到按用户安装的产品.

You could write an executable that finds the old .msi and uninstalls them using APIs like ::MsiEnumRelatedProducts() to find the products and then ::MsiConfigureProduct() to remove them. However, without the user account, I'm not sure you'll be able to see the per-user installed product.

这篇关于如何从每个用户更改为所有用户安装?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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