如何在 Progress-4GL 程序上安装更新
How to install updates on Progress-4GL programs
下午好,
在我的公司,我们定期对客户的系统进行更新,所有这些都是 Progress-4GL 技术。目前我们正在手动完成所有这些工作,我想将其自动化。
需要执行以下操作:
- 对当前数据库进行转储 (*.df)
- 将修改上传到数据库(*.df 文件)
- 编译 *.w 和 *.p 文件。
是否有一个工具可以完成所有这些工作(连同 zipping/unzipping *.w、*.p 和 *.i 文件),还是我需要自己创建这样一个工具?
在后一种情况下,上述操作的命令行命令是什么:
- 对当前数据库进行转储 (*.df)
- 将修改上传到数据库(*.df 文件)
- 编译 *.w 和 *.p 文件。
如果您熟悉 ANT,请查看 ANT 的 PCT 插件:
https://github.com/Riverside-Software/pct
这使得在“新”完整 DF 和当前数据库之间创建 delta.df 文件变得容易,例如:
<PCTDumpIncremental destFile="temp/delta.df" dlcHome="${dlc}"
debugLevel="2" activeIndexes="0" removeEmptyDFFile="true" msgBufferSize="${Mm}" >
<SourceDB dbname="temp/ref-SmartDB" singleUser="true" />
<TargetDB dbname="${smartdb}" dbDir="${smartdbdir}" singleUser="${smartdbsingleuser}"/>
</PCTDumpIncremental>
然后将delta.df加载到当前应用程序数据库中:
<PCTLoadSchema srcFile="temp/delta.df" dlcHome="${dlc}" onlineChanges="true" callbackClass="rssw.pct.AbstractLoadCallback" msgBufferSize="${Mm}" commitWhenErrors="false">
<DBConnectionSet refid="smartdbset" />
</PCTLoadSchema>
然后编译应用程序:
<PCTCompile destDir="${installroot}" graphicalMode="true" dlcHome="${dlc}"
md5="true" minSize="false" cpinternal="${cpinternal}" cpColl="${cpcoll}" cpstream="${cpstream}"
compileUnderscore="true" inputchars="32000" baseDir="${installroot}"
token="4000" progPerc="10" assemblies="${assemblies}">
<fileset dir="${installroot}" casesensitive="false">
<include name="Ccs/**/*.cls"/>
<include name="Consultingwerk/**/*.cls"/>
<include name="Consultingwerk/**/*.p"/>
<include name="Consultingwerk/**/*.w"/>
<include name="Setup/**/*.p"/>
<include name="src/**/*.p"/>
</fileset>
<propath>
<pathelement path="${installroot}/." />
<pathelement path="${installroot}/src" />
<pathelement path="${installroot}/Consultingwerk/Studio/ProdictDumpHack/src" />
<pathelement path="${dlc}/gui/netlib/OpenEdge.Net.pl" />
</propath>
<DBConnectionSet refid="smartdbset" />
</PCTCompile>
ANT 和 PCT 从 11.7 开始包含在 OpenEdge 中。由于您使用的是 11.6,因此您必须携带自己的 ANT 和 PCT。
下午好,
在我的公司,我们定期对客户的系统进行更新,所有这些都是 Progress-4GL 技术。目前我们正在手动完成所有这些工作,我想将其自动化。
需要执行以下操作:
- 对当前数据库进行转储 (*.df)
- 将修改上传到数据库(*.df 文件)
- 编译 *.w 和 *.p 文件。
是否有一个工具可以完成所有这些工作(连同 zipping/unzipping *.w、*.p 和 *.i 文件),还是我需要自己创建这样一个工具?
在后一种情况下,上述操作的命令行命令是什么:
- 对当前数据库进行转储 (*.df)
- 将修改上传到数据库(*.df 文件)
- 编译 *.w 和 *.p 文件。
如果您熟悉 ANT,请查看 ANT 的 PCT 插件:
https://github.com/Riverside-Software/pct
这使得在“新”完整 DF 和当前数据库之间创建 delta.df 文件变得容易,例如:
<PCTDumpIncremental destFile="temp/delta.df" dlcHome="${dlc}"
debugLevel="2" activeIndexes="0" removeEmptyDFFile="true" msgBufferSize="${Mm}" >
<SourceDB dbname="temp/ref-SmartDB" singleUser="true" />
<TargetDB dbname="${smartdb}" dbDir="${smartdbdir}" singleUser="${smartdbsingleuser}"/>
</PCTDumpIncremental>
然后将delta.df加载到当前应用程序数据库中:
<PCTLoadSchema srcFile="temp/delta.df" dlcHome="${dlc}" onlineChanges="true" callbackClass="rssw.pct.AbstractLoadCallback" msgBufferSize="${Mm}" commitWhenErrors="false">
<DBConnectionSet refid="smartdbset" />
</PCTLoadSchema>
然后编译应用程序:
<PCTCompile destDir="${installroot}" graphicalMode="true" dlcHome="${dlc}"
md5="true" minSize="false" cpinternal="${cpinternal}" cpColl="${cpcoll}" cpstream="${cpstream}"
compileUnderscore="true" inputchars="32000" baseDir="${installroot}"
token="4000" progPerc="10" assemblies="${assemblies}">
<fileset dir="${installroot}" casesensitive="false">
<include name="Ccs/**/*.cls"/>
<include name="Consultingwerk/**/*.cls"/>
<include name="Consultingwerk/**/*.p"/>
<include name="Consultingwerk/**/*.w"/>
<include name="Setup/**/*.p"/>
<include name="src/**/*.p"/>
</fileset>
<propath>
<pathelement path="${installroot}/." />
<pathelement path="${installroot}/src" />
<pathelement path="${installroot}/Consultingwerk/Studio/ProdictDumpHack/src" />
<pathelement path="${dlc}/gui/netlib/OpenEdge.Net.pl" />
</propath>
<DBConnectionSet refid="smartdbset" />
</PCTCompile>
ANT 和 PCT 从 11.7 开始包含在 OpenEdge 中。由于您使用的是 11.6,因此您必须携带自己的 ANT 和 PCT。