diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2019-02-25 18:18:35 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2019-02-25 18:18:35 +0200 |
| commit | e112866a2cf44ddeb5b40e8ffc84614ecfe6abdf (patch) | |
| tree | 48614b95fe9e3d549a465a7b381f432c21a0fef8 /Software/Visual_Studio/PPC | |
| parent | 08d9858ecd0d4adb0c9c6076d7d2b1216e8f64c3 (diff) | |
| download | Tango-e112866a2cf44ddeb5b40e8ffc84614ecfe6abdf.tar.gz Tango-e112866a2cf44ddeb5b40e8ffc84614ecfe6abdf.zip | |
Implemented auto installer release for machine studio and PPC.
Diffstat (limited to 'Software/Visual_Studio/PPC')
7 files changed, 141 insertions, 74 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PPCPublisher.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PPCPublisher.cs index 65709d46f..7c6113829 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PPCPublisher.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PPCPublisher.cs @@ -5,7 +5,9 @@ using System.Diagnostics; using System.IO; using System.Linq; using System.Text; +using System.Threading; using System.Threading.Tasks; +using Tango.AdvancedInstaller; using Tango.Core; using Tango.Core.Helpers; using Tango.PPC.Common.Web; @@ -136,6 +138,19 @@ namespace Tango.PPC.Common.Publish throw new FileNotFoundException($"Could not locate the PPC executable at {appPath}."); } + if (!String.IsNullOrWhiteSpace(Options.InstallerProject)) + { + if (!File.Exists(Options.InstallerProject)) + { + throw new FileNotFoundException($"Installer project not found at '{Options.InstallerProject}'."); + } + + if (!Directory.Exists(Options.InstallerOutputFolder)) + { + throw new DirectoryNotFoundException($"Installer output folder does not exists '{Options.InstallerOutputFolder}'."); + } + } + return Task.Factory.StartNew(() => { String tempFile = TemporaryManager.CreateFile(".zip"); @@ -165,8 +180,34 @@ namespace Tango.PPC.Common.Publish Comments = Options.Comments, Version = local_version, MachineVersionGuid = Options.MachineVersionGuid, + WithInstaller = !String.IsNullOrWhiteSpace(Options.InstallerProject), }).Result; + + if (!String.IsNullOrWhiteSpace(Options.InstallerProject)) + { + String output_folder = Options.InstallerOutputFolder; + OnPublishProgress(0, 100, $"Building installer project..."); + InstallerBuilder installerBuilder = new InstallerBuilder(Options.InstallerProject); + String installer_name = $"PPC Installer_v{Version.Parse(local_version).ToString(3)}.exe"; + String output_file = Path.Combine(output_folder, installer_name); + installerBuilder.Build(local_version, output_file).Wait(); + + Thread.Sleep(5000); + + OnPublishProgress(0, 100, $"Uploading installer '{installer_name}'..."); + + using (StorageBlobUploader uploader = new StorageBlobUploader(response.InstallerBlobAddress, output_file)) + { + uploader.Progress += (x, e) => + { + OnPublishProgress(e.Current, e.Total, $"Uploading installer {(((double)e.Current / (double)e.Total) * 100d).ToString("0.0")}%...", true); + }; + + uploader.Upload().Wait(); + } + } + CreateTupPackage(tempFile).Wait(); OnPublishProgress(0, 100, $"Starting version upload..."); @@ -177,7 +218,7 @@ namespace Tango.PPC.Common.Publish { InvokeUINow(() => { - OnPublishProgress(e.Current, e.Total, $"Uploading to storage {(((double)e.Current / (double)e.Total) * 100d).ToString("0.0")}%...", true); + OnPublishProgress(e.Current, e.Total, $"Uploading version {(((double)e.Current / (double)e.Total) * 100d).ToString("0.0")}%...", true); }); }; diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PublishOptions.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PublishOptions.cs index fa04d8331..4c40acb44 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PublishOptions.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Publish/PublishOptions.cs @@ -66,14 +66,6 @@ namespace Tango.PPC.Common.Publish set { _environment = value; RaisePropertyChangedAuto(); EnvironmentChanged?.Invoke(this, new EventArgs()); } } - private String _installerProject; - [Option("installer-project-file", HelpText = "Specifies the advanced installer project file to build and upload.", Required = false)] - public String InstallerProject - { - get { return _installerProject; } - set { _installerProject = value; RaisePropertyChangedAuto(); } - } - private String _machineVersionGuid; [Option("machine-version-guid", HelpText = "Specifies the machine version id for which to upload the PPC version.", Required = true)] public String MachineVersionGuid @@ -90,6 +82,22 @@ namespace Tango.PPC.Common.Publish set { _tfpPath = value; RaisePropertyChangedAuto(); } } + private String _installerProject; + [Option("installer-project-file", HelpText = "Specifies the advanced installer project file to build and upload.", Required = false)] + public String InstallerProject + { + get { return _installerProject; } + set { _installerProject = value; RaisePropertyChangedAuto(); } + } + + private String _installerOutputFolder; + [Option("installer-output-folder", HelpText = "Specifies where to save the installer application.", Required = false)] + public String InstallerOutputFolder + { + get { return _installerOutputFolder; } + set { _installerOutputFolder = value; RaisePropertyChangedAuto(); } + } + private SynchronizationOptions _synchronization; public SynchronizationOptions Synchronization { diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj b/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj index fe2f87fb2..07ea6c5d1 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Tango.PPC.Common.csproj @@ -285,6 +285,10 @@ </None> </ItemGroup> <ItemGroup> + <ProjectReference Include="..\..\Tango.AdvancedInstaller\Tango.AdvancedInstaller.csproj"> + <Project>{c5df1816-34e5-4700-824c-29623a1baa22}</Project> + <Name>Tango.AdvancedInstaller</Name> + </ProjectReference> <ProjectReference Include="..\..\Tango.BL\Tango.BL.csproj"> <Project>{f441feee-322a-4943-b566-110e12fd3b72}</Project> <Name>Tango.BL</Name> @@ -367,7 +371,7 @@ </Target> <ProjectExtensions> <VisualStudio> - <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" /> + <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" /> </VisualStudio> </ProjectExtensions> </Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadVersionRequest.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadVersionRequest.cs index d75a94300..29d533043 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadVersionRequest.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadVersionRequest.cs @@ -15,5 +15,7 @@ namespace Tango.PPC.Common.Web public String MachineVersionGuid { get; set; } public String Comments { get; set; } + + public bool WithInstaller { get; set; } } } diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadVersionResponse.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadVersionResponse.cs index 9a0fc1a5f..0b4859915 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadVersionResponse.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/Web/UploadVersionResponse.cs @@ -13,5 +13,7 @@ namespace Tango.PPC.Common.Web public String Token { get; set; } public String BlobAddress { get; set; } + + public String InstallerBlobAddress { get; set; } } } diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Publisher.UI/MainWindow.xaml b/Software/Visual_Studio/PPC/Tango.PPC.Publisher.UI/MainWindow.xaml index f29b6bd44..f74194222 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Publisher.UI/MainWindow.xaml +++ b/Software/Visual_Studio/PPC/Tango.PPC.Publisher.UI/MainWindow.xaml @@ -29,98 +29,108 @@ <Grid IsEnabled="{Binding IsFree}"> <DockPanel Margin="10"> - <Grid Height="50" DockPanel.Dock="Bottom"> - <StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> - <Button Width="150" Command="{Binding CreateTupCommand}">CREATE TUP FILE</Button> - <Button Width="150" Command="{Binding PublishCommand}">PUBLISH</Button> + <TextBlock DockPanel.Dock="Top" FontSize="22">Tango Publish Utility</TextBlock> + <Grid DockPanel.Dock="Bottom" Margin="0 20 0 0"> + <StackPanel> + <StackPanel VerticalAlignment="Bottom"> + <TextBlock Text="{Binding PublishArgs.Message}" Foreground="Gray"></TextBlock> + <ProgressBar Height="15" Margin="0 5 0 10" Maximum="{Binding PublishArgs.Total}" Value="{Binding PublishArgs.Progress}"></ProgressBar> + </StackPanel> + <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Height="40"> + <Button Width="150" Command="{Binding CreateTupCommand}">CREATE TUP FILE</Button> + <Button Width="150" Command="{Binding PublishCommand}">PUBLISH</Button> + </StackPanel> </StackPanel> </Grid> <Grid> - <StackPanel> - <TextBlock FontSize="22">Tango Publish Utility</TextBlock> + <ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" Padding="0 0 10 0"> + <StackPanel> - <DockPanel Margin="0 40 0 0"> - <TextBlock VerticalAlignment="Center" Width="136" DockPanel.Dock="Left">Deployment Slot:</TextBlock> - <ComboBox x:Name="combo" ItemsSource="{Binding Source={x:Type web:DeploymentSlot},Converter={StaticResource EnumToItemsSourceConverter}}" SelectedValue="{Binding Options.Environment}" SelectedValuePath="Value" DisplayMemberPath="DisplayName" Margin="5 0 0 0" /> - </DockPanel> + <DockPanel Margin="0 40 0 0"> + <TextBlock VerticalAlignment="Center" Width="136" DockPanel.Dock="Left">Deployment Slot:</TextBlock> + <ComboBox x:Name="combo" ItemsSource="{Binding Source={x:Type web:DeploymentSlot},Converter={StaticResource EnumToItemsSourceConverter}}" SelectedValue="{Binding Options.Environment}" SelectedValuePath="Value" DisplayMemberPath="DisplayName" Margin="5 0 0 0" /> + </DockPanel> - <DockPanel Margin="0 20 0 0"> - <TextBlock VerticalAlignment="Center" Width="136" DockPanel.Dock="Left">Build Configuration:</TextBlock> - <ComboBox Margin="20 0 0 0" SelectedItem="{Binding Options.BuildConfig}" SelectedIndex="0"> - <sys:String>Release</sys:String> - <sys:String>Debug</sys:String> - </ComboBox> - </DockPanel> + <DockPanel Margin="0 20 0 0"> + <TextBlock VerticalAlignment="Center" Width="136" DockPanel.Dock="Left">Build Configuration:</TextBlock> + <ComboBox Margin="20 0 0 0" SelectedItem="{Binding Options.BuildConfig}" SelectedIndex="0"> + <sys:String>Release</sys:String> + <sys:String>Debug</sys:String> + </ComboBox> + </DockPanel> - <DockPanel Margin="0 20 0 0"> - <TextBlock VerticalAlignment="Center" DockPanel.Dock="Left">Selected machine version:</TextBlock> - <ComboBox Margin="20 0 0 0" ItemsSource="{Binding MachineVersions}" SelectedItem="{Binding SelectedMachineVersion}" DisplayMemberPath="Name" /> - </DockPanel> + <DockPanel Margin="0 20 0 0"> + <TextBlock VerticalAlignment="Center" DockPanel.Dock="Left">Selected machine version:</TextBlock> + <ComboBox Margin="20 0 0 0" ItemsSource="{Binding MachineVersions}" SelectedItem="{Binding SelectedMachineVersion}" DisplayMemberPath="Name" /> + </DockPanel> - <TextBlock Margin="0 20 0 0"> + <TextBlock Margin="0 20 0 0"> <TextBlock> <Run>Remote Version:</Run> <Run Text="{Binding RemoteVersion}"></Run> </TextBlock> </TextBlock> - <TextBlock Margin="0 20 0 0"> + <TextBlock Margin="0 20 0 0"> <TextBlock> <Run>Local Version:</Run> <Run Text="{Binding LocalVersion}"></Run> </TextBlock> </TextBlock> - <TextBlock Margin="0 20 0 0">Examiner Provision Sequence Items</TextBlock> + <TextBlock Margin="0 20 0 0">Examiner Provision Sequence Items</TextBlock> - <DataGrid Height="170" SelectionMode="Single" SelectionUnit="FullRow" HorizontalScrollBarVisibility="Disabled" AutoGenerateColumns="False" ItemsSource="{Binding ProvisionSequenceItemsView}" CanUserAddRows="True" CanUserReorderColumns="False" CanUserDeleteRows="True" CanUserSortColumns="False" AddingNewItem="DataGrid_AddingNewItem"> - <DataGrid.Columns> - <DataGridTextColumn IsReadOnly="True" Width="100" Header="File Name" Binding="{Binding FileName}" /> - <DataGridComboBoxColumn Width="75" Header="Type" ItemsSource="{Binding Source={x:Type examiner:ExaminerSequenceItemType},Converter={StaticResource EnumToItemsSourceConverter}}" SelectedValueBinding="{Binding Type}" SelectedValuePath="Value" DisplayMemberPath="DisplayName" /> - <DataGridComboBoxColumn Width="90" Header="Direction" ItemsSource="{Binding Source={x:Type examiner:ExaminerSequenceItemDirection},Converter={StaticResource EnumToItemsSourceConverter}}" SelectedValueBinding="{Binding Direction}" SelectedValuePath="Value" DisplayMemberPath="DisplayName" /> - <DataGridCheckBoxColumn Width="35" Header="S/N" Binding="{Binding RequiresSerialNumber}" /> - <DataGridTextColumn Header="Name" Width="1*" Binding="{Binding Name}" /> - <DataGridTextColumn Header="Index" Width="40" Binding="{Binding Index}" /> - </DataGrid.Columns> - </DataGrid> + <DataGrid Height="170" SelectionMode="Single" SelectionUnit="FullRow" HorizontalScrollBarVisibility="Disabled" AutoGenerateColumns="False" ItemsSource="{Binding ProvisionSequenceItemsView}" CanUserAddRows="True" CanUserReorderColumns="False" CanUserDeleteRows="True" CanUserSortColumns="False" AddingNewItem="DataGrid_AddingNewItem"> + <DataGrid.Columns> + <DataGridTextColumn IsReadOnly="True" Width="100" Header="File Name" Binding="{Binding FileName}" /> + <DataGridComboBoxColumn Width="75" Header="Type" ItemsSource="{Binding Source={x:Type examiner:ExaminerSequenceItemType},Converter={StaticResource EnumToItemsSourceConverter}}" SelectedValueBinding="{Binding Type}" SelectedValuePath="Value" DisplayMemberPath="DisplayName" /> + <DataGridComboBoxColumn Width="90" Header="Direction" ItemsSource="{Binding Source={x:Type examiner:ExaminerSequenceItemDirection},Converter={StaticResource EnumToItemsSourceConverter}}" SelectedValueBinding="{Binding Direction}" SelectedValuePath="Value" DisplayMemberPath="DisplayName" /> + <DataGridCheckBoxColumn Width="35" Header="S/N" Binding="{Binding RequiresSerialNumber}" /> + <DataGridTextColumn Header="Name" Width="1*" Binding="{Binding Name}" /> + <DataGridTextColumn Header="Index" Width="40" Binding="{Binding Index}" /> + </DataGrid.Columns> + </DataGrid> - <TextBlock Margin="0 20 0 0">Examiner Update Sequence Items</TextBlock> + <TextBlock Margin="0 20 0 0">Examiner Update Sequence Items</TextBlock> - <DataGrid Height="170" SelectionMode="Single" SelectionUnit="FullRow" HorizontalScrollBarVisibility="Disabled" AutoGenerateColumns="False" ItemsSource="{Binding UpdateSequenceItemsView}" CanUserAddRows="True" CanUserReorderColumns="False" CanUserDeleteRows="True" CanUserSortColumns="False" AddingNewItem="DataGrid_AddingNewItem_1"> - <DataGrid.Columns> - <DataGridTextColumn IsReadOnly="True" Width="100" Header="File Name" Binding="{Binding FileName}" /> - <DataGridComboBoxColumn Width="75" Header="Type" ItemsSource="{Binding Source={x:Type examiner:ExaminerSequenceItemType},Converter={StaticResource EnumToItemsSourceConverter}}" SelectedValueBinding="{Binding Type}" SelectedValuePath="Value" DisplayMemberPath="DisplayName" /> - <DataGridComboBoxColumn Width="90" Header="Direction" ItemsSource="{Binding Source={x:Type examiner:ExaminerSequenceItemDirection},Converter={StaticResource EnumToItemsSourceConverter}}" SelectedValueBinding="{Binding Direction}" SelectedValuePath="Value" DisplayMemberPath="DisplayName" /> - <DataGridCheckBoxColumn Width="35" Header="S/N" Binding="{Binding RequiresSerialNumber}" /> - <DataGridTextColumn Header="Name" Width="1*" Binding="{Binding Name}" /> - <DataGridTextColumn Header="Index" Width="40" Binding="{Binding Index}" /> - </DataGrid.Columns> - </DataGrid> + <DataGrid Height="170" SelectionMode="Single" SelectionUnit="FullRow" HorizontalScrollBarVisibility="Disabled" AutoGenerateColumns="False" ItemsSource="{Binding UpdateSequenceItemsView}" CanUserAddRows="True" CanUserReorderColumns="False" CanUserDeleteRows="True" CanUserSortColumns="False" AddingNewItem="DataGrid_AddingNewItem_1"> + <DataGrid.Columns> + <DataGridTextColumn IsReadOnly="True" Width="100" Header="File Name" Binding="{Binding FileName}" /> + <DataGridComboBoxColumn Width="75" Header="Type" ItemsSource="{Binding Source={x:Type examiner:ExaminerSequenceItemType},Converter={StaticResource EnumToItemsSourceConverter}}" SelectedValueBinding="{Binding Type}" SelectedValuePath="Value" DisplayMemberPath="DisplayName" /> + <DataGridComboBoxColumn Width="90" Header="Direction" ItemsSource="{Binding Source={x:Type examiner:ExaminerSequenceItemDirection},Converter={StaticResource EnumToItemsSourceConverter}}" SelectedValueBinding="{Binding Direction}" SelectedValuePath="Value" DisplayMemberPath="DisplayName" /> + <DataGridCheckBoxColumn Width="35" Header="S/N" Binding="{Binding RequiresSerialNumber}" /> + <DataGridTextColumn Header="Name" Width="1*" Binding="{Binding Name}" /> + <DataGridTextColumn Header="Index" Width="40" Binding="{Binding Index}" /> + </DataGrid.Columns> + </DataGrid> - <TextBlock Margin="0 20 0 0">Firmware Upgrade Package</TextBlock> - <DockPanel Margin="0 5 0 0"> - <Button DockPanel.Dock="Right" Margin="10 0 0 0" Command="{Binding FirmwareUpgradePackageBrowseCommand}">BROWSE</Button> - <TextBox IsReadOnly="True" Text="{Binding Options.TfpPath}"></TextBox> - </DockPanel> + <TextBlock Margin="0 20 0 0">Firmware Upgrade Package</TextBlock> + <DockPanel Margin="0 5 0 0"> + <Button DockPanel.Dock="Right" Margin="10 0 0 0" Command="{Binding FirmwareUpgradePackageBrowseCommand}">BROWSE</Button> + <TextBox IsReadOnly="True" Text="{Binding Options.TfpPath}"></TextBox> + </DockPanel> - <StackPanel Margin="0 30 0 0"> + <StackPanel Margin="0 20 0 0"> + <TextBlock>Installer Project</TextBlock> + <TextBox Margin="0 5 0 0" Text="{Binding Options.InstallerProject,UpdateSourceTrigger=PropertyChanged}"></TextBox> + <TextBlock Margin="0 10 0 0">Installer Output Folder</TextBlock> + <TextBox Margin="0 5 0 0" Text="{Binding Options.InstallerOutputFolder,UpdateSourceTrigger=PropertyChanged}"></TextBox> + </StackPanel> - <TextBlock>Comments</TextBlock> - <TextBox Margin="0 5 0 0" Text="{Binding Options.Comments}" Height="50" AcceptsReturn="True" TextWrapping="Wrap"></TextBox> + <StackPanel Margin="0 20 0 0"> - <TextBlock>Email</TextBlock> - <TextBox Margin="0 5 0 0" Text="{Binding Options.Email}"></TextBox> + <TextBlock>Comments</TextBlock> + <TextBox Margin="0 5 0 0" Text="{Binding Options.Comments}" Height="50" AcceptsReturn="True" TextWrapping="Wrap"></TextBox> - <TextBlock Margin="0 10 0 0">Password</TextBlock> - <TextBox Margin="0 5 0 0" Text="{Binding Options.Password}"></TextBox> - </StackPanel> - </StackPanel> + <TextBlock>Email</TextBlock> + <TextBox Margin="0 5 0 0" Text="{Binding Options.Email}"></TextBox> - <StackPanel VerticalAlignment="Bottom"> - <TextBlock Text="{Binding PublishArgs.Message}" Foreground="Gray"></TextBlock> - <ProgressBar Height="15" Margin="0 5 0 10" Maximum="{Binding PublishArgs.Total}" Value="{Binding PublishArgs.Progress}"></ProgressBar> - </StackPanel> + <TextBlock Margin="0 10 0 0">Password</TextBlock> + <TextBox Margin="0 5 0 0" Text="{Binding Options.Password}"></TextBox> + </StackPanel> + </StackPanel> + </ScrollViewer> </Grid> </DockPanel> </Grid> diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest b/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest index efc5f8179..d72e75011 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest @@ -16,7 +16,7 @@ Remove this element if your application requires this virtualization for backwards compatibility. --> - <!--<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />--> + <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> </requestedPrivileges> </security> </trustInfo> |
