【问题标题】:generate a file before creating installer using CPack and NSIS在使用 CPack 和 NSIS 创建安装程序之前生成文件
【发布时间】:2021-06-18 23:09:48
【问题描述】:

我目前正在为一个大型项目制作安装程序,它需要从数据库中获取最新的表。到目前为止,数据库转储是手动完成的,现在我希望在生成安装程序时自动完成。由于已经有一个脚本在执行转储过程,我想知道是否可以告诉 CPack(或 CMake)在生成安装程序之前先运行这个脚本?比如CMakeList中有一条规则:

    install(
            FILES "../db/structures.sql"
            DESTINATION ${INSTALL_DB} 
            CONFIGURATIONS Release
            RENAME "create.sql"
    )

Sql-Dump 文件“structures.sql”可以使用另一个名为“ma​​ke_db_dump.pl”(因此在命令行中应该使用“perl make_db_dump.pl”来调用它)。我希望在生成安装程序之前自动调用 make_db_dump.pl 并生成文件。这可能吗?

对于环境:我在windows下使用VS 2019和CMake。

而工作流程是:CMake -> VS Project -> 生成安装程序

【问题讨论】:

  • 只需创建文件structures.sql 作为构建 过程的一部分(使用add_custom_target/add_custom_command)。因此,该文件将在安装程序打包时存在。请注意,安装过程只是“将此文件放入安装目录”。创建要安装的文件是 build 过程的责任。
  • @Tsyvarev 这个项目实际上没有构建过程,它实际上只是将所有数据库相关文件和一些其他配置打包在一起。这样的事情还能做吗? (对不起,我是 CMake 新手)
  • 创建您想要交付给用户的任何文件都是一个构建过程。即使这个创建是“简单地将所有与数据库相关的文件和一些其他配置打包在一起”。 安装(或打包)适用于所有已现有所需的文件。
  • @Tsyvarev 明白了,tyvm :)

标签: cmake visual-studio-2019 nsis cpack


【解决方案1】:

在 NSIS 中,您可以使用 !system 从编译器内部执行外部命令:

!system '"c:\stuff\app.exe" -foo -bar' 

【讨论】:

  • 但是如何用 CMake 做到这一点?还是 CPack?由于要求,我无法创建自己的 NSIS 脚本来生成安装程序,它必须由 VS2019 和 Cmake (CPack) 生成
  • CPACK_NSIS_EXTRA_INSTALL_COMMANDS
  • 知道了,您的解决方案和 Tsyvarev 提供的解决方案都可以正常工作,tyvm
猜你喜欢
  • 1970-01-01
  • 2012-10-20
  • 2021-11-01
  • 1970-01-01
  • 2022-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
相关资源
最近更新 更多