使用Gradle execute for wix

wfsdck30  于 2023-08-06  发布在  其他
关注(0)|答案(3)|浏览(101)

我有一个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并让它工作?

  • 谢谢-谢谢
50pmv0ei

50pmv0ei1#

如果你的项目包含几个gradle构建(gradle项目),你应该使用依赖项。使用execute()方法是一个坏主意。我会这样做:
根/candle/candle.gradle

task build(type: Exec) {
    commandLine 'cmd', '/C', 'candle.exe', '...'
}

字符串
ROOT/app/build.gradle

task build(dependsOn: ':candle:build') {
    println 'build candle'
}


ROOT/app/settings.gradle

include ':candle'
project(':candle').projectDir = "$rootDir/../candle" as File


顺便说一句,我的Exec任务有问题,所以在我的项目中,我用and.exec()替换了它,所以candle任务可能看起来像这样:

task candle << {
    def productWxsFile = new File(buildDir, "Product.wxs")
    ant.exec(executable:candleExe, failonerror: false, resultproperty: 'candleRc') {
        arg(value: '-out')
        arg(value: buildDir.absolutePath+"\\")
        arg(value: '-arch')
        arg(value: 'x86')
        arg(value: '-dInstallerDir='+installerDir)
        arg(value: '-ext')
        arg(value: wixHomeDir+"\\WixUtilExtension.dll")
        arg(value: productWxsFile)
        arg(value: dataWxsFile)
        arg(value: '-v')

    }
    if (!ant.properties['candleRc'].equals('0')) {
        throw new Exception('ant.exec failed rc: '+ant.properties['candleRc'])
    }
}


关于多项目的更多信息,您可以在这里找到http://www.gradle.org/docs/current/userguide/multi_project_builds.html

hjqgdpho

hjqgdpho2#

SetupBuilder plugin可以完成这项工作。它为你的java应用程序创建lauch4j启动器,签名,创建msi文件并签名。您不需要使用复杂的WIX工具集语法。

bpsygsoo

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”)

相关问题