我正在使用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>
答案 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