Внедрение номера версии в путь к исходному файлу в разделе [Files] файла InnoSetup с передачей аргумента командной строки - PullRequest
0 голосов
/ 04 марта 2019

Я создаю установочный файл с 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

Не уверен, возможно ли это вообще, но спасибо запомогите заранее.

(РЕДАКТИРОВАТЬ1)

Спасибо всем, кто приложил усилия для решения этой проблемы.

Я думаю, что мое дело не тривиально, и я попытался пропустить не относящуюся к делу информацию, чтобы упростить задачу, но я думаю, что должен поделиться дополнительной информацией о сборке.

Когда я вручную набираю в 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"

тогда файл jar по-прежнему исключается из упакованного exe-установщика.

Соответствующие коды 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>

свойства мавена:

<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 голосов
/ 22 марта 2019

Снятие внешнего флага решило проблему.Внешний флаг был ошибкой.Документация InnoSetup:

Если указан флаг external, источником должен быть полный путь к существующему файлу (или шаблону) на носителе распространения или в системе пользователя (например, "{src} \ license".ini ").

Константы могут использоваться, только если указан внешний флаг, поскольку компилятор не выполняет никаких константных преобразований.

Я думал, что {#MyAppVersion} - этопостоянный, но это не так.

Правильный код:

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

Спасибо за Мартина Прикрыла, он указал на ошибку в комментариях.

0 голосов
/ 06 марта 2019

Попробуйте удалить цитаты, как это:

ISCC.exe setup.iss /dMyAppVersion=1.0.0
...