每个用户和Windows Installer的启动应用程序

时间:2010-04-26 13:50:39

标签: windows windows-installer

我有一台按机器安装的应用程序(因为它使用服务)。该应用程序的一部分是系统托盘应用程序,它允许登录用户监视服务操作。我正在试图找出如何最好地安装此监视器应用程序。

应允许每个用户配置他/她是否想要在登录时运行监控应用程序。这意味着HKLM / Software / Microsoft / Windows / Run键已关闭 - 这只允许为所有用户配置。

当然有相应的HKCU密钥,但是如果只是安装到这个密钥,它只会安装应用程序的用户。

SO问题Launch app on startup for all users, but also allow per-user setting (Windows)指的是简单地具有用户可配置的regkey或类似技术,由启动应用程序检查以确定是否运行。但这意味着应用程序必须启动以检查值,如果我可以避免它,我宁愿不要膨胀用户的启动。这种方法的好处是可以在卸载时删除regkey。

完成安装部分的另一种方法可能是使用Active Setup在登录时创建HKCU regkey,但这是没有文档的,在我看来,如果应用程序是没有简单的方法来卸载regkey卸载?我认为在HKCU的Run键下留下注册表值可能会在卸载后为用户带来问题。

是否有使用Windows Installer处理每个用户启动应用程序的标准方法?特别是关于如何稍后卸载这些?

3 个答案:

答案 0 :(得分:1)

在我看来,你已经接近回答了自己的问题。我想你可能只需要分担配置是否为每个用户自动运行的责任......呃,让我解释一下:

You can use either a self-healing component of HKCU Registry keys or ActiveSetup to ensure that every user gets the configuration

如果您使用HKCU注册表项,您的MSI安装程序需要有一个组件,其中包含“密钥文件”作为HKCU条目 - 因此,当新用户第一次启动该程序时,Windows Installer将自行执行治愈写这些条目。其中一个条目是您的HKCU / Software / Microsoft / Windows / Run值,但不是键值,因为您希望用户能够删除它而不是每次都返回他们运行程序!然后,您希望程序可以选择删除自动运行值。

如果您使用ActiveSetup(我建议使用它,因为它是simple并且“只是工作”),那么您可能会发现制作一个简单的应用程序(或VBScript等)最容易提示用户想让监控程序自动运行。因此,您的ActiveSetup将启动提示程序/脚本,提示程序将创建HKCU / Software / Microsoft / Windows / Run值,或者更好的是,只是用户的Start Menu \ Programs \ Startup目录中的快捷方式。

答案 1 :(得分:0)

可能有点低技术,但你不能只为用户的启动文件夹添加一个快捷方式(开始菜单/程序/启动)?

答案 2 :(得分:0)

我猜你会在这种情况下使用HKLM / Software / Microsoft / Windows / Run。在启动时运行监视器应用程序的功能实际上不属于监视器应用程序,而不属于安装程序。在登录时,监视器应用程序可以检测这是否是第一次运行监视器应用程序,并向用户提供始终在启动时运行监视器应用程序的选项。