我正在使用自动构建和安装程序项目在TFS 2008中创建msi文件。在用户使用MSI文件安装时,我需要在用户计算机上创建一个包含数千个文件且大小为数百MB的大文件夹结构。使用TFS安装程序项目,如果我添加单个文件,那么我的installer.vdproj变得非常庞大且无法维护。
那么有一种很好的方法可以将这些文件作为单个单元来处理吗?我现在可以想到压缩机制,它有两个部分: -
如何将文件压缩成cab文件(在MSBulid进程中可能)?似乎makecab命令一次只接受一个文件?
如何修改安装程序项目,以便cab文件是MSI的一部分,在用户的机器上,cab文件是未压缩的,以创建文件夹结构?我可以有cab文件和MSI(所以cab文件不是MSI的一部分)?其余的dll进入MSI。
由于
答案 0 :(得分:1)
Windows安装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以便在安装过程中提取它。