将版本号注入InnoSetup文件的[Files]节中的Source File路径,并通过命令行参数传递它

时间:2019-03-04 18:41:43

标签: maven command-line inno-setup exec-maven-plugin

我正在使用InnoSetup 5.5.6构建安装文件,并且我还在使用maven自动构建安装程序。 Maven正在使用exec-maven-plugin,因此此方法等效于在命令行上运行iscc.exe。

我基本上想做的是将版本号作为命令行参数,因此我可以在setup.iss文件中使用该版本号。

这是命令行参数(下面有更多详细信息)

ISCC.exe setup.iss /d"MyAppVersion=1.0.0"

这是.iss文件中的相关代码段。我一直在尝试这个,但是没有用。如果我对版本进行硬编码,则一切正常。

[Files]
Source: "..\..\..\target\jars\my-java-project-{#MyAppVersion}.jar"; DestDir: "{app}"; DestName: "my-java-project.jar"; Flags: external

我想将文件评估为:

my-java-project-1.0.0.jar

不确定是否可能,但感谢您的提前帮助。

(EDIT1)

感谢大家为解决此问题付出的努力。

我认为我的案子微不足道,为了简化起见,我试图跳过不相关的信息,但我想我应该分享有关构建的更多信息。

当我手动在cmd中键入exec-maven-plugin内的命令

iscc.exe setup.iss /d"VersionText=1.0.0-SNAPSHOT" /d"VersionNumeric=1.0.0" /d"BalanceAgentVersion=1.0.0-SNAPSHOT"

然后,打包的exe安装程序中仍然省略了jar文件。

相关的Maven代码:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
    <execution>
    <id>generate-installer</id>
    <goals>
        <goal>exec</goal>
    </goals>
    <phase>package</phase>
</execution>
</executions>
<configuration>
    <executable>${project.basedir}/src/main/resources/issc_executables/ISCC.exe</executable>

    <workingDirectory>${project.basedir}/src/main/innosetup/</workingDirectory>
    <arguments>
        <argument>${project.basedir}/src/main/innosetup/setup.iss</argument>
        <argument>/d"VersionText=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-${parsedVersion.qualifier}"</argument>
        <argument>/d"VersionNumeric=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}"</argument>
        <argument>/d"MyAppVersion=${my-app.version}"</argument>


    </arguments>
</configuration>

maven属性:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <dependency-plugin.version>2.10</dependency-plugin.version>
    <my-app.version.version>1.0.0-SNAPSHOT</balance-agent.version>
</properties>

2 个答案:

答案 0 :(得分:0)

删除外部标志可以解决此问题。外部标志是一个错误。 InnoSetup文档:

  

当指定标志external时,Source必须是现有的完整路径名   分发介质或用户系统上的文件(或通配符)   (例如“ {src} \ license.ini”)。

     

常量只能在指定了外部标志时使用,   因为编译器本身不会进行任何常量转换。

我认为{#MyAppVersion}是一个常数,但不是。

正确的代码是:

[Files]
Source: "..\..\..\target\jars\my-java-project-{#MyAppVersion}.jar"; DestDir: "{app}"; DestName: "my-java-project.jar";

感谢Martin Prikryl,他指出了评论中的错误。

答案 1 :(得分:-1)

尝试删除这样的引号:

ISCC.exe setup.iss /dMyAppVersion=1.0.0