Я использую chef для создания установочных файлов для локальной сборки в Windows 10 (например, использую ChefDK с chef-client -z -o win10-setup).
Я хочу использовать cookbook_file или remote_directory для копирования файлов *.dll которые у меня есть локально в моей кулинарной книге. Я обнаружил, что если в моей кулинарной книге есть .dll, шеф-повар пожалуется, что не видит файл и выдает команду Chef::Exceptions::FileNotFound .
Например, если у меня есть [cookbook]\files\default\notepadplusplus\plugins\someplugin.dll
и попробовать:
cookbook_file "#{ENV["USERPROFILE"]}\\AppData\\Roaming\\Notepad++\\plugins\\someplugin.dll" do
source 'notepadplusplus/plugins/someplugin.dll'
action :create_if_missing
only_if { ::File.exist?("#{ENV["PROGRAMFILES"]}/Notepad++/notepad++.exe") }
end
она не будет работать. Однако, если переименовать someplugin.dll в someplugin.dll.plugin , а затем изменить свой код к следующему, где я обновить source соответственно
cookbook_file "#{ENV["USERPROFILE"]}\\AppData\\Roaming\\Notepad++\\plugins\\someplugin.dll" do
source 'notepadplusplus/plugins/someplugin.dll.plugin'
action :create_if_missing
only_if { ::File.exist?("#{ENV["PROGRAMFILES"]}/Notepad++/notepad++.exe") }
end
это будет работать.
Тем не менее, это не идеальное решение, потому что я не хочу делать cookbook_file для каждого файла отдельно, а вместо этого использую remote_directory чтобы скопировать все плагины в папке одновременно.
Я запустил тест с remote_directory и обнаружил, что он скопирует другие файлы, которые не являются *.dll но пропустит файлы *.dll
Я не хочу использовать много сценариев для переименования файлов после копирования, так как это может привести к ошибкам.
Есть ли какая-то особая причина, по которой шеф, кажется, не считает, что файлы .dll не существуют или каким-то образом настроен на игнорирование этих файлов? Кажется, что он фильтрует по фактическому расширению файла, а не по данным в файле, так как трюк переименования работает выше.
