【问题标题】:TFS2008 - packaging in MSI and cab file for installer projectTFS2008 - 安装程序项目的 MSI 和 cab 文件打包
【发布时间】:2011-05-26 11:22:31
【问题描述】:

我正在使用自动构建和安装程序项目在 TFS 2008 中创建 msi 文件。当用户使用 MSI 文件安装时,我需要在用户机器上创建一个包含数千个文件且大小为数百 MB 的大文件夹结构。使用 TFS 安装程序项目,如果我添加单个文件,那么我的 installer.vdproj 变得非常大且无法维护。

那么有没有一种好方法可以将这些文件作为一个单元来处理?我现在可以想到压缩机制,它有两个部分:-

  1. 如何将文件压缩成cab文件(在MSBulid进程中可能)?好像 makecab 命令一次只需要一个文件?

  2. 如何修改安装程序项目,使 cab 文件成为 MSI 的一部分,并且在用户计算机上解压缩 cab 文件以创建文件夹结构?我可以拥有 cab 文件和 MSI(这样 cab 文件不是 MSI 的一部分)吗?其余的 dll 进入 MSI。

谢谢

【问题讨论】:

    标签: msbuild windows-installer cab


    【解决方案1】:

    Windows Install SDK 中的工具(例如 MSIFILER.EXE)可以轻松编写脚本以将整个文件目录(例如)加载到 MSI 的文件存储或 CAB 中。

    在您的情况下,您可能希望将脚本配置为以post-build event 运行,以便首先构建安装项目的 MSI,然后脚本对其进行修改。

    你是正确的 makecab.exe 一次只需要一个文件。您可以使用CMD shell FOR-loop 逐一添加它们(例如FOR /F %%file IN ('dir /b /s') DO makecab %%file output.cab)。就个人而言,我更喜欢archive tools like 7-zip,这也是scriptable from the command line。

    有几种方法可以将文件添加到 Windows Installer 程序包中(例如 WiImport.vbs、MAKEMSI 或 manually)...

    ..但也许你不想那样做。我认为最好只包含存档(zip、cab 等)和create a custom action in the setup project 以在安装过程中提取它。

    【讨论】:

    • 感谢您的帮助。但我不能使用 msifiler,语法是“msifiler.exe -d {database} [-v] [-h] [-s ALTSOURCE]”所以数据库是我的 project.msi 文件。我不需要 -h 选项,因为现有文件已经有表条目。那么我在哪里提到我想要推送到 msi 中的文件。这也不允许创建 cab 文件。
    • 哦,对不起——那一定不是正确的! (自从我积极打包 MSI 以来已经有一段时间了。)现在正在寻找更好的选择...
    猜你喜欢
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多