为什么安装程序在单击快捷方式后运行



我使用WixSharp为我的应用程序创建了一个简单的引导程序。

namespace TestBootstrapper
{
class Program
{
static void Main()
{
var package = new MsiPackage("../testmsi.msi")
{
DisplayInternalUI = true,
Id = "MyId",
Compressed = true,
Visible = true
};
var bootstrapper = new Bundle("MyTestInstaller", package)
{
Version = new Version("1.0.0.0"),
UpgradeCode = new Guid("1FCC927B-7BB0-4FB0-B81E-2D87012E470B"),
PreserveTempFiles = true,
DisableModify = "yes",
DisableRemove = true
};
bootstrapper.Build("Installer.exe");
}
}
}

我以管理员身份登录并安装了应用程序(使用Installer.exe(,在安装过程中事件查看器中没有任何错误。当我单击快捷方式时,应用程序按预期运行。

如果我以标准用户或管理员身份运行testmsi.msi,它安装时没有任何错误,如果我单击快捷方式,应用程序将按预期运行。

我以标准用户身份登录并安装了应用程序(使用Installer.exe(。安装过程中,事件查看器中没有错误。但当我点击快捷方式时,安装程序再次运行。

那个么,为什么安装程序会运行,以及如何防止这种行为呢?

这是一次修复,根据重新安装的内容,可能是好的,也可能是坏的。应用程序事件日志应该包含MsiInstaller条目,这些条目说明正在修复的内容。这不一定是一件需要预防的坏事。

假设你进行了每台机器的安装,如果你从MSI将一个文件安装(例如(到用户的应用程序数据文件夹中,然后你以另一个用户的身份登录并运行该应用程序,那么该用户显然缺少该文件。因此,Windows安装程序将对应用程序中丢失的部分进行安装。该文件可能是系统的所有用户所必需的,是吗?Windows假定,如果您将文件(或注册表项(安装到用户配置文件位置,则登录的每个人都需要此文件,因此当其他用户登录并使用快捷方式时,它将通过"修复"进行安装。

在其他情况下,修复效果不太好。如果你删除了你安装的文件,Windows将尝试还原它。如果你按用户安装,但随后以另一个用户身份登录,并尝试使用非产品预期用途的应用程序-每台机器的安装程序即可。

我刚刚发现了一些可能有帮助的东西-

如果您没有将任何程序安装到应用程序目录(例如,仅安装到本地应用程序数据(,Windows Installer会生成一条错误消息,因为应用程序目录不存在。

如果将ANY文件添加到应用程序目录,或手动创建,快捷方式将正常工作。

最新更新