我有一个build.gradle,它编译我的项目,运行test,创建jar,然后用launch 4j打包。我也希望能够使用wix创建一个安装程序,但是从.execute()启动它似乎有很多麻烦。
蜡烛和灯光所需的文件保存在\build\installer中。但是,尝试通过在构建文件中调用execute来访问这些文件总是会失败。
我已经在/build/installer中做了第二个build.gradle,它确实可以工作。它是:
task buildInstaller {
def command = project.rootDir.toString() + "//" +"LSML Setup.wxs"
def candleCommand = ['candle', command]
def candleProc = candleCommand.execute()
candleProc.waitFor()
def lightCommand = ['light' , '-ext', 'WixUIExtension', "LSML Setup.wixobj"]
def lightProc = lightCommand.execute()
}
字符串
有没有什么方法可以从主构建文件运行第二个构建文件并让它工作,或者有没有方法直接调用execute并让它工作?
- 谢谢-谢谢
3条答案
按热度按时间50pmv0ei1#
如果你的项目包含几个gradle构建(gradle项目),你应该使用依赖项。使用
execute()
方法是一个坏主意。我会这样做:根/candle/candle.gradle
字符串
ROOT/app/build.gradle
型
ROOT/app/settings.gradle
型
顺便说一句,我的
Exec
任务有问题,所以在我的项目中,我用and.exec()
替换了它,所以candle任务可能看起来像这样:型
关于多项目的更多信息,您可以在这里找到http://www.gradle.org/docs/current/userguide/multi_project_builds.html。
hjqgdpho2#
SetupBuilder plugin可以完成这项工作。它为你的java应用程序创建lauch4j启动器,签名,创建msi文件并签名。您不需要使用复杂的WIX工具集语法。
bpsygsoo3#
我的帖子来得很晚,但我想分享我的反馈,因为这次聊天对我很有帮助。对于我的情况,我必须添加最后一行代码来生成安装程序。
第一个月
def command = project.rootDir.toString() + "//" +"LSML Setup.wxs"
个def candleCommand = ['candle', command]
个def candleProc = candleCommand.execute()
个candleProc.waitFor()
个def lightCommand = ['light', '-ext', 'WixUIExtension', "LSML Setup.wixobj"]
个def lightProc = lightCommand.execute()
个lightProc
个lightProc.waitFor()
}
此任务生成三个文件(“LSML Setup.wixobj”、“LSML Setup.wixpdb”和“LSML Setup.msi”)