【问题标题】:How to create a MSI file which simply copies a directory to Program Files?如何创建一个简单地将目录复制到 Program Files 的 MSI 文件?
【发布时间】:2018-08-28 11:03:23
【问题描述】:

我想创建一个 MSI 文件,它只是将一个目录复制到“程序文件”目录并在开始菜单中创建一个图标。

仅此而已。 对用户没有问题,没有依赖关系,没有注册表项等。 只需复制目录并设置图标。

如果我们部署新版本的程序,那么 MSI 应该只是将新版本复制到旧版本之上。没有“卸载”程序。

该任务使用哪个工具?

【问题讨论】:

    标签: windows-installer


    【解决方案1】:

    我想答案是任何通用工具,因为他们都可以做到这一点。 Here is a list of (arguably) the most common tools.

    查看顶部的链接答案以获取直接下载链接。


    静默安装:任何 MSI 文件都可以通过标准 msiexec.exe 命令行静默运行(无需 GUI):

    msiexec.exe /I "C:\Your.msi" /QN /L*V "C:\msilog.log"
    

    快速参数说明

    /I = run install sequence
    /QN = run completely silently
    /L*V "C:\msilog.log" = verbose logging at specified path
    

    【讨论】:

    • WiX Toolset Tutorial 是一个很好的 WiX 入门资源。
    • 非常感谢您的全面回答!我目前正在查看您提到的所有工具和其他答案!
    • 最后,高级安装程序(甚至是免费软件版本!)完成了这项工作!谢谢!它就像一个魅力,正是我想要的。我也试过 WiX,但这太复杂了。
    【解决方案2】:

    只是为了扩展 Stein 的回答,您可以使用 Advanced Installer 的 free edition("Simple" projects only) 构建这个简单的包。

    创建项目后,只需转到产品详细信息页面并禁用“向 Windows Installer 注册”选项。

    很可能上面提到的所有工具都有类似的选项,您只需要搜索它,因为我对它们的所有来龙去脉都不太熟悉(PS 我在团队建设高级安装程序中工作)。

    【讨论】:

    • 我不确定他是否想禁用 Windows Installer 注册,但也许他会这样做?我以为他说他没有自己的实际注册表项。但也许这种不注册的方法更适合他的简单要求?如果没有,他需要设置一个基本的重大升级 - 从外观上看,这在简单项目类型中会自动发生吗?
    • 嗯,这就是我对“简单复制”和“不卸载”的理解,我之前也看到过我们用户的这个要求。关于自动升级,是的,它在所有项目类型中“自动”发生,用户只需要在产品详细信息页面增加版本。
    • 是的,也许这就是他所需要的。看起来他也想压制 GUI——现在我又读了一遍。我将添加一个关于如何抑制它的快速提示。试过那个版本更新。相当整洁。行得通。
    • 非常感谢,我也要试试这个工具!禁用“使用 Windows 安装程序注册”是我什至没有想到的。 @SteinÅsmul 我们有一个连接到 sql server 的 .net 客户端。用户配置存储在数据库中。桌面环境、连接字符串和 .net 库在所有计算机上都是相同的,因此我们希望它尽可能简单 - 只需将客户端文件复制到“Program Files”即可。
    • 我认为只需使用简单的 MSI 以静默模式安装就可以了。
    猜你喜欢
    • 2023-02-10
    • 2023-03-23
    • 2012-04-21
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    相关资源
    最近更新 更多