В настоящее время я пытаюсь автоматизировать развертывание приложения в рабочей роли Azure, загружая файл в роль из хранилища BLOB-объектов и работая с ним с помощью пакетного сценария, который также находится в хранилище BLOB-объектов. Я использую onStart для этого. Вот сокращенная версия моего метода onStart:
Подготовка к извлечению файлов:
public override bool OnStart()
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
container.CreateIfNotExist();
CloudBlob file = container.GetBlobReference("file.bat");
Собственно получение файлов в роли:
LocalResource localResource = RoleEnvironment.GetLocalResource("localStore");
string filePath = System.IO.Path.Combine(localResource.RootPath, "file.bat");
using (var fileStream = System.IO.File.OpenWrite(@filePath))
{
file.DownloadToStream(fileStream);
}
Вот как я получаю пакетный файл и зависимости в роль. Теперь моя проблема заключается в том, что изначально я создал пакетный файл с предположением, что другие файлы будут удалены прямо на C:\
. Например - C:\installer.exe
, C:\archive.zip
и т.д. Но теперь файлы лежат в localStorage.
Я думаю, что могу либо А) каким-то образом сообщить командному файлу, где находится localStorage, динамически написав скрипт onStart, либо Б) изменить localStorage, чтобы использовать C:\
.
Я не уверен, как это сделать, или что лучше всего сделать здесь. Мысли?