Я создаю установщик с помощью набора инструментов WiX. Я хотел бы создать резервную копию старой конфигурации (файлы с расширением .config), когда флажок установлен, а затем установите новые с помощью _new, добавленного к имени.Cmd не работает как пользовательское действие установщика
Я создал сценарии cmd для этого и ввел их в пользовательские действия.
<CustomAction Id="RenameNewConfigs" Directory="INSTALLFOLDER" ExeCommand='for /r %%a in (*.config) do ren "%%~a" "%%~na_new%%~xa"' Impersonate="no" Execute="deferred" Return="ignore" />
<CustomAction Id="MoveOldConfigs" Directory="INSTALLFOLDER" ExeCommand='xcopy /SYI "..\OldConfigs" "."' Impersonate="no" Execute="deferred" Return="ignore" />
<CustomAction Id="RemoveConfigsBackup" Directory="INSTALLFOLDER" ExeCommand='rd ..\OldConfigs /S /Q' Impersonate="no" Execute="deferred" Return="ignore" />
<InstallExecuteSequence>
<Custom Action="RenameNewConfigs" After="InstallFiles">KEEP_OLD_CONFIGURATION</Custom>
<Custom Action="MoveOldConfigs" After="RenameNewConfigs">KEEP_OLD_CONFIGURATION</Custom>
<Custom Action="RemoveConfigsBackup" After="MoveOldConfigs">INSTALLED AND (NOT REMOVE="ALL")</Custom>
</InstallExecuteSequence>
Во время исполнения (в соответствии с бревнами) первая и третья команды производят следующий вывод:
Info 1721. There is a problem with this Windows Installer package. A program required for this install to complete could not be run. Contact your support personnel or package vendor. Action: RenameNewConfigs, location: C:\Program Files\correct\path\, command: for /r %%a in (*.config) do ren "%%~a" "%%~na_new%%~xa"
Что не так? Почему не удается выполнить стандартную команду?
+1 настоятельно рекомендую использовать встроенную функциональность WiX для выполнения той же задачи и с помощью C++/C# (Если вы знаете, .NET присутствует всегда) в противном случае. –