【问题标题】:How can I install an exe file for all user accounts on a computer?如何为计算机上的所有用户帐户安装 exe 文件?
【发布时间】:2014-07-01 05:15:18
【问题描述】:

我想分发一个应用程序(简单的一个 exe 文件),以便用户安装一次,然后将为该计算机上的所有用户帐户安装它。它应该在没有 Wix / InstallShield / Setup-project 的情况下完成。 (Clickonce 甚至不支持多用户安装。)

它是如何完成的?注册表编辑(哪个?),手动创建一个msi文件(如何?有参考指南吗?)?

编辑

我的问题是不是如何在安装时执行一些命令。问题在于 Windows 如何知道安装了哪些应用程序。

【问题讨论】:

  • 可能,您必须编写自己的安装程序。
  • 分发表示安装。如果您不想使用现有的安装程序,那么:1)您可以制作自己的安装程序 2)您可以制作不需要安装的应用程序(也可以是 portable 版本)。
  • 例如,@Sinatr 不安装将不允许从命令行使用它。
  • 您是否有理由要重新发明轮子,而不是使用现有的、经过良好测试的已知可以工作的轮子?
  • 根据问题编辑,您可以更好地解释您的需求。典型的安装程序工作是确保准备好运行哪些软件。您可以使程序在任何情况下都可以运行(即使缺少组件,例如使用引导程序),并且即使从另一台 PC 上的 USB 记忆棒启动,也可以自行配置。如果您需要在命令行中可用,那么您的 exe 文件位置必须位于 PATH 或靠近 cmd.exe 本身。

标签: c# .net visual-studio deployment windows-installer


【解决方案1】:

我不确定它对您的情况是否有用,但您可以创建一个登录脚本。 此脚本将在用户登录域后运行。

详情请点击此链接:logon script

【讨论】:

  • 但是我会放什么?
【解决方案2】:

在 Windows 中安装应用程序基本上有两种方法。让我称它们为旧方式新方式

老办法

您需要手动执行以下步骤:

  • 将所有必需的文件复制到所有用户都可以访问的位置,例如 C:\Program Files\YourApplication(或 \Program Files (x86),如果它是 64 位 Windows 上的 32 位应用程序)。

  • 安装并注册所有先决条件(例如 .NET Framework)。

  • 所有用户创建开始菜单和/或桌面图标,方法是将它们放置在适当的位置。例如,对于 Windows 7,这将是 C:\ProgramData\Microsoft\Windows\Start Menu\ProgramsC:\Users\Public\Desktop

  • (可选)创建一个与上述所有步骤相反的可执行文件(例如uninstall.exe),将其复制到您的程序文件子目录并在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 中创建一个指向此卸载 exe 的条目。这将允许用户卸载您的应用程序。

这就是多年来一直这样做的方式。 Windows 不知道安装了哪些应用程序,它只知道可以卸载哪些应用程序

新方式

您提供一个 MSI 文件,基本上是 a database containing information about your software and how it should be installed,然后让 Windows Installer 完成所有工作。 Windows 2000 是第一个包括开箱即用的 Windows Installer 的操作系统。

Windows 安装程序跟踪已安装的程序,这使它能够做一些有用的事情,例如

  • 确定补丁是否适合安装的版本,
  • 重新安装意外删除的丢失文件,

请注意,Windows Installer 配置数据is not easily accessible,因此您不能只添加一些注册表项来将您的应用程序“注册”到 Windows Installer。如果你想要 Windows Installer,你需要一个 MSI 文件。

然而,MSI 格式相当复杂,这就是开发诸如 InstallShield、WiX 等工具的原因。例如,WiX 基本上是一个 XML -> MSI 转换工具。它仍然非常接近 MSI 结构,但简化了很多事情。 (是的,WiX 很复杂,但 MSI 更复杂。)

【讨论】:

  • 实际上我认为你有旧的方式和新的方式颠倒了。旧方法(1999 年)是创建一个合适的安装程序来完成所有这些工作。这些天来,所有新鲜出炉的人都不知道如何做到这一点,他们用你所谓的“旧方式”的新实现来重新发明轮子。
  • @ispiro- 有“已安装”的程序。 MSI 具有通过 Win32 API 和 WMI 检测的丰富组件、功能、产品注册元数据。如果您使用的是正确编写的 MSI,我可以准确地告诉您在我的 300,000 台机器环境中安装了什么。
【解决方案3】:

有一个非常强大的基于脚本的开源应用程序来构建安装程序项目。它被称为 NSIS。你可以在这里找到它 http://nsis.sourceforge.net/Main_Page

您可以简单地指定您的 exe 文件,从哪里获取它以及从哪里安装它。上述链接中还提供了全面的文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    相关资源
    最近更新 更多