Последний git га sh должен быть указан в имени установщика - PullRequest
0 голосов
/ 03 февраля 2020

Рассмотрим ситуацию, в которой Git установлен в Windows и доступен только в среде Git Bash, а не Windows cmd. Наличие vdproj для создания установщика для приложения, но необходимо вставить последнюю git ha sh в имя пакета MSI. Например, в данный момент он производит: Behnama.msi Но нам нужно, чтобы он произвел: Behnama_49ee23d3b33ba0fa5ce0ac128f50ed00345e9ce3.msi Ха sh 49ee ... - это то, что вверху, когда я ввожу 'git log' в Git Bash. Когда создается новый коммит, а затем идите и соберите vdproj, я хочу, чтобы ha sh был изменен в имени файла MSI.

Ответы [ 3 ]

0 голосов
/ 04 февраля 2020

Решение состоит в том, чтобы установить Active Perl или любой двоичный файл perl, чтобы иметь возможность запускать сценарии perl. Затем запустите его как событие после сборки. Этот скрипт perl может получить га sh Я хочу:

$folder = '';
while (! -d "$folder.git") {
    $folder .= '../';
}
open IF, "$folder.git/logs/HEAD" or die $!;
while (<IF>) {
    s/\s+$//;
    $lastline = $_ if $_;
}
close IF;
@ar = split /\s+/, $lastline;
print "$ar[1]\n";

Последнее утверждение может выглядеть примерно так:

rename("Behnama.msi", "Behnama_$ar[1].msi");

вместо.

0 голосов
/ 20 февраля 2020

Вам нужно выполнить несколько шагов

  1. Получить последний git идентификатор фиксации
  2. Записать идентификатор в wxi-файл
  3. Включить wxi-файл к исходному wxs-файлу
  4. Используйте значение в качестве переменной

Для 1) вы можете использовать git log -1 --pretty=format:"%h" (short ha sh) или git log -1 --pretty=format:"%H" (long hash), чтобы получить последний коммит id.

Для 2) В Windows Тип системы git log -1 --pretty=format:"%H" > gitLastCommit.wxi, чтобы сохранить последний коммит в виде wxi-файла. СОВЕТ : вам нужно обернуть простой идентификатор с помощью <include><?define mylastGitCommit = "VALUE OF COMMT ID" ?></include>

для 3) Добавьте аналогичную строку <?include .\gitLastCommit.wxi ?> в файл wxs.

для 4) Используйте определенная переменная $(var.mylastGitCommit) в вашем файле wxs, где она необходима

0 голосов
/ 04 февраля 2020

VDPROJ не основан на MSBuild, поэтому он не может сделать так много. Лучше всего было бы иметь команду postbuild, которая переименовала бы Product.msi в Product_% SHA% .msi.

...