我在 Installshield 中构建了一个 MSI,我希望在安装过程中将一些文件从一个位置复制到另一个位置。由于我想复制到目标机器上的文件是 MSI 安装的文件,因此我使用了 DuplicateFile 表。
MSI 的目的是备份和更新一些目标机器上的一些 EXE 文件。
我在 DuplicateFile 表中添加了 3 个条目,如下所示:
KeyFile : DUPSTMMFILE
Component: STMM (reference to component in the project)
File: xxx (reference to file in the project, under the selected component)
DestName: stmedia.q9644
DestFolder: BACKUPS
对于目标文件夹(备份),我在目录表中创建了一个新条目:
Directory : BACKUPS
Directory_Parent: INSTALLDIR
DefaultDir : BACKUPS
IsAttributes: 0
当我建造背部时,没有出现任何错误。
在运行 MSI 时,我期望的文件被替换,但我期望存在的副本却不存在。
当我记录输出时,DuplicateFiles 似乎甚至没有识别出有需要处理的条目。
我可能遗漏了哪些步骤?
MSI (s) (C0:90) [17:20:15:078]: Doing action: DuplicateFiles
Action 17:20:15: DuplicateFiles. Creating duplicate files
Action start 17:20:15: DuplicateFiles.
DuplicateFiles: File: Creating duplicate files, Directory: , Size:
Action ended 17:20:15: DuplicateFiles. Return value 1.
MSI (s) (C0:90) [17:20:15:078]: Doing action: BindImage
Action 17:20:15: BindImage. Binding executables
Action start 17:20:15: BindImage.
Action ended 17:20:15: BindImage. Return value 1.
答案1
我想发表评论但我还没有要点。
当您提到文件:xxx(引用项目中选定组件下的文件)时 - 您是否使用了文件表中该文件的文件名或文件键?
我还能说多少次文件......
文档说使用文件密钥。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa368335(v=vs.85).aspx