[TOC] #### 1. 前言 --- 微擎开发文档:[https://wiki.w7.cc/chapter/35?id=1520](https://wiki.w7.cc/chapter/35?id=1520) 应用发布后,开发者如果想在用户安装、更新、卸载应用时,安装一些数据表,变更一些数据表或是执行一些脚本,可以通过在 manifest.xml 中进行设置。 #### 2. manifest.xml --- manifest.xml 文件中的 `install`、`uninstall`、`upgrade` 标签分别用来设置应用 `安装、卸载、更新` 时指定sql语句或脚本 也就是 ~~~ <install><![CDATA[SQL语句或php文件名]]></install> ~~~ 示例: 推荐使用php文件名, 便于更好的管理应用 `安装、卸载、更新` 时执行的文件 ~~~ <install><![CDATA[install.php]]></install> <uninstall><![CDATA[uninstall.php]]></uninstall> <upgrade><![CDATA[upgrade.php]]></upgrade> ~~~ ~~~ <install><![CDATA[ CREATE TABLE IF NOT EXISTS `ims_applet_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id', `uniacid` int(11) NOT NULL DEFAULT '0' COMMENT '平台id', `unionid` varchar(30) DEFAULT '' COMMENT '开发平台唯一标识', `openid` varchar(50) NOT NULL DEFAULT '' COMMENT '用户openid', `nickName` varchar(255) CHARACTER SET utf8mb4 NOT NULL DEFAULT '' COMMENT '微信昵称', `gender` tinyint(1) NOT NULL DEFAULT '0' COMMENT '性别 0 未知 1 男 2 女', `avatarUrl` varchar(255) NOT NULL DEFAULT '' COMMENT '微信头像', `create_time` int(11) NOT NULL COMMENT '添加时间', `update_time` int(11) DEFAULT NULL COMMENT '修改时间', `delete_time` int(11) DEFAULT NULL COMMENT '软删除', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表'; ]]></install> ~~~ #### 3. 安装模块执行 install.php --- ```php <?php // 安装模块执行 创建模块的数据表 $sql = " CREATE TABLE IF NOT EXISTS `ims_applet_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id', `uniacid` int(11) NOT NULL DEFAULT '0' COMMENT '平台id', `unionid` varchar(30) DEFAULT '' COMMENT '开发平台唯一标识', `openid` varchar(50) NOT NULL DEFAULT '' COMMENT '用户openid', `nickName` varchar(255) CHARACTER SET utf8mb4 NOT NULL DEFAULT '' COMMENT '微信昵称', `gender` tinyint(1) NOT NULL DEFAULT '0' COMMENT '性别 0 未知 1 男 2 女', `avatarUrl` varchar(255) NOT NULL DEFAULT '' COMMENT '微信头像', `create_time` int(11) NOT NULL COMMENT '添加时间', `update_time` int(11) DEFAULT NULL COMMENT '修改时间', `delete_time` int(11) DEFAULT NULL COMMENT '软删除', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表'; "; pdo_run($sql); ``` #### 4. 卸载模块执行 uninstall.php --- ```php <?php // 卸载模块 删除模块的数据表 $sql = <<<EOT DROP TABLE IF EXISTS `ims_applet_user`; EOT; pdo_run($sql); ``` #### 5. 模块升级时执行 upgrade.php --- **追加字段:`ims_lottery_user` 表的 `goods_info` 字段不存在时则添加上该字段** ~~~ if (!pdo_fieldexists('lottery_user', 'status')) { pdo_query("ALTER TABLE " . tablename('lottery_user') . " ADD `status` tinyint(1) DEFAULT NULL"); } ~~~ **追加数据表: `ims_lottery_goods_tips` 表不存在则创建该数据表** ~~~ if (!pdo_tableexists('lottery_goods_tips')) { pdo_query("CREATE TABLE IF NOT EXISTS `ims_lottery_goods_tips` ( `id` int(11) NOT NULL AUTO_INCREMENT, `goods_id` int(11) NOT NULL COMMENT '奖品ID', `type` varchar(255) DEFAULT NULL COMMENT '说明类型', `textValue` varchar(255) DEFAULT NULL COMMENT '输入内容(type=text)', `image` text COMMENT '图片(type=image,bigimg)', `value` text COMMENT '内容(type=scan,smallCode)', `create_time` int(11) NOT NULL COMMENT '创建时间', `update_time` int(11) DEFAULT NULL COMMENT '更新时间', `delete_time` int(11) DEFAULT NULL COMMENT '删除时间', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品说明';"); } ~~~