c#winforms:确定第一次运行程序

时间:2008-10-17 02:38:54

标签: c# .net windows winforms

我需要提供一次向导,第一次我的Windows窗体应用程序在安装后运行。我想可以使用像firstrun = false这样的用户设置。但是我还需要处理卸载程序然后重新安装的情况。如何重置该用户设置?它已经出现在配置文件中... \ Users - user - \ AppData \ Roaming ...对于该用户。我需要在重新安装后运行向导,所以我需要重置该设置。我是否需要使用自定义安装程序操作执行此操作?

8 个答案:

答案 0 :(得分:2)

Windows注册表似乎是适合此类设置的地方。安装程序步骤可以在用户重新安装时重置密钥,或者如果您不想在安装之间保留任何设置,则可以在卸载时清除注册表项。

答案 1 :(得分:2)

最好让安装程序在注册表中创建FirstRun密钥并将其设置为true(或1或其他),并确保卸载程序完全删除此密钥。然后让你的应用程序在启动时读取此键,并将其设置为false(或0或其他)。

如果用户卸载并重新安装您的应用程序,他们会在第一次运行时再次看到该向导。

答案 2 :(得分:2)

对于使用相同应用的多个Windows用户,每用户true / false设置将永远无法正常工作。安装程序仅作为一个Windows用户运行一次,并且无法访问该计算机上所有其他用户的每用户设置。

您可以在安装时将每台计算机标志设置为true。但是,如果管理员用户运行FRW并更改它,则没有其他用户会获得FRW。如果非管理员用户运行FRW,他们将无法更改它并将在下次应用程序运行时运行FRW。

您需要的是机器范围的isntallation时间戳和FRW运行时的每用户时间戳。这是场景:

在安装时,在应用的HKLM注册表中添加时间戳。对于每个用户,启动应用程序时,请检查上面提到的每个用户设置文件中第一个运行wizzard(FRW)的时间戳。如果每用户时间戳早于HKLM安装戳记,请为该用户运行FRW并更新每用户设置文件。

如果该应用程序已卸载并再次安装,则安装程序将更新HKLM时间戳,从而导致再次为所有用户运行FRW。

答案 3 :(得分:1)

在设置文件或resx文件中使用名称 - 值对,如FirstRun = true。在启动时读取此文件,如果为true,则显示向导并设置为false 每次安装时,都应该覆盖文件的副本,因此您将获得FirstRun = true。该向导将在每次(重新)安装后运行

答案 4 :(得分:1)

可以存储已经运行配置向导的用户列表。

此列表可以存储在计算机级配置文件或app目录中。重新安装应用程序后,可以清除此列表。

您只需使用列表检查当前用户,而不是查看FirstRun。如果用户在列表中,请跳过配置向导。如果用户不在列表中,则显示配置向导。

答案 5 :(得分:0)

您可以在程序目录中创建一个文件。卸载程序不会删除它,因为安装程序没有添加它。

答案 6 :(得分:0)

我建议您更改程序的行为,重新安装后不要重置配置设置。毕竟,用户已经做出了自己的选择,为什么还要问同样的问题呢?

答案 7 :(得分:0)

类似于@Franci Penov的建议,我会这样做:

  • 在安装时,使用新生成的GUID创建注册表值HKLM \ Software \ YourCompany \ YourApp \ InstallId。

  • 首次运行用户时,请将该值与HKCU \ Software \ YourCompany \ YourApp \ InstallId进行比较。

  • 如果HKCU值不存在或者它们不同,请运行首次运行的逻辑,然后将HKLM \ Software \ YourCompany \ YourApp \ InstallId复制到HKCU \ Software \ YourCompany \ YourApp \ InstallId。< / p>

这具有不易受时间变化影响的(微小)优势。