В момента се опитвам да автоматизирам внедряването на приложение към роля на Azure Worker, като изтегля файл в ролята от хранилището на 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.
Мисля, че мога или A) По някакъв начин да кажа на командния файл къде е localStorage чрез динамично писане на скрипта onStart, или B) да променя localStorage да използва C:\
.
Не съм сигурен как да направя нито едното, нито какво би било най-доброто нещо, което да направя тук. мисли?