diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/api/wix/WixToolset.Data/Intermediate.cs | 14 | ||||
| -rw-r--r-- | src/api/wix/WixToolset.Data/WixOutput.cs | 32 | ||||
| -rw-r--r-- | src/wix/WixToolset.Core/CommandLine/BuildCommand.cs | 2 |
3 files changed, 44 insertions, 4 deletions
diff --git a/src/api/wix/WixToolset.Data/Intermediate.cs b/src/api/wix/WixToolset.Data/Intermediate.cs index 977f894a..5dc38980 100644 --- a/src/api/wix/WixToolset.Data/Intermediate.cs +++ b/src/api/wix/WixToolset.Data/Intermediate.cs | |||
| @@ -247,6 +247,20 @@ namespace WixToolset.Data | |||
| 247 | } | 247 | } |
| 248 | 248 | ||
| 249 | /// <summary> | 249 | /// <summary> |
| 250 | /// Saves an intermediate that can only be written to to a path on disk. | ||
| 251 | /// </summary> | ||
| 252 | /// <param name="path">Path to save intermediate file to disk.</param> | ||
| 253 | public void SaveNew(string path) | ||
| 254 | { | ||
| 255 | Directory.CreateDirectory(Path.GetDirectoryName(Path.GetFullPath(path))); | ||
| 256 | |||
| 257 | using (var wixout = WixOutput.CreateNew(path)) | ||
| 258 | { | ||
| 259 | this.Save(wixout); | ||
| 260 | } | ||
| 261 | } | ||
| 262 | |||
| 263 | /// <summary> | ||
| 250 | /// Saves an intermediate to a WixOutput. | 264 | /// Saves an intermediate to a WixOutput. |
| 251 | /// </summary> | 265 | /// </summary> |
| 252 | /// <param name="wixout">Destination to save.</param> | 266 | /// <param name="wixout">Destination to save.</param> |
diff --git a/src/api/wix/WixToolset.Data/WixOutput.cs b/src/api/wix/WixToolset.Data/WixOutput.cs index 43359f24..72b922c9 100644 --- a/src/api/wix/WixToolset.Data/WixOutput.cs +++ b/src/api/wix/WixToolset.Data/WixOutput.cs | |||
| @@ -25,7 +25,7 @@ namespace WixToolset.Data | |||
| 25 | } | 25 | } |
| 26 | 26 | ||
| 27 | /// <summary> | 27 | /// <summary> |
| 28 | /// | 28 | /// |
| 29 | /// </summary> | 29 | /// </summary> |
| 30 | public Uri Uri { get; } | 30 | public Uri Uri { get; } |
| 31 | 31 | ||
| @@ -189,7 +189,10 @@ namespace WixToolset.Data | |||
| 189 | /// <returns>Stream to the data of the file.</returns> | 189 | /// <returns>Stream to the data of the file.</returns> |
| 190 | public Stream CreateDataStream(string name) | 190 | public Stream CreateDataStream(string name) |
| 191 | { | 191 | { |
| 192 | this.DeleteExistingEntry(name); | 192 | if (this.archive.Mode == ZipArchiveMode.Update) |
| 193 | { | ||
| 194 | this.DeleteExistingEntry(name); | ||
| 195 | } | ||
| 193 | 196 | ||
| 194 | var entry = this.archive.CreateEntry(name); | 197 | var entry = this.archive.CreateEntry(name); |
| 195 | 198 | ||
| @@ -203,7 +206,10 @@ namespace WixToolset.Data | |||
| 203 | /// <param name="path">Path to file on disk to include in the output.</param> | 206 | /// <param name="path">Path to file on disk to include in the output.</param> |
| 204 | public void ImportDataStream(string name, string path) | 207 | public void ImportDataStream(string name, string path) |
| 205 | { | 208 | { |
| 206 | this.DeleteExistingEntry(name); | 209 | if (this.archive.Mode == ZipArchiveMode.Update) |
| 210 | { | ||
| 211 | this.DeleteExistingEntry(name); | ||
| 212 | } | ||
| 207 | 213 | ||
| 208 | this.archive.CreateEntryFromFile(path, name, System.IO.Compression.CompressionLevel.Optimal); | 214 | this.archive.CreateEntryFromFile(path, name, System.IO.Compression.CompressionLevel.Optimal); |
| 209 | } | 215 | } |
| @@ -241,6 +247,26 @@ namespace WixToolset.Data | |||
| 241 | } | 247 | } |
| 242 | 248 | ||
| 243 | /// <summary> | 249 | /// <summary> |
| 250 | /// Creates a new file structure on disk that can only be written to. | ||
| 251 | /// </summary> | ||
| 252 | /// <param name="path">Path to write file structure to.</param> | ||
| 253 | /// <returns>Newly created <c>WixOutput</c>.</returns> | ||
| 254 | internal static WixOutput CreateNew(string path) | ||
| 255 | { | ||
| 256 | var fullPath = Path.GetFullPath(path); | ||
| 257 | |||
| 258 | Directory.CreateDirectory(Path.GetDirectoryName(fullPath)); | ||
| 259 | |||
| 260 | var uri = new Uri(fullPath); | ||
| 261 | |||
| 262 | var stream = File.Create(path); | ||
| 263 | |||
| 264 | var archive = new ZipArchive(stream, ZipArchiveMode.Create, leaveOpen: true); | ||
| 265 | |||
| 266 | return new WixOutput(uri, archive, stream); | ||
| 267 | } | ||
| 268 | |||
| 269 | /// <summary> | ||
| 244 | /// Disposes of the internal state of the file structure. | 270 | /// Disposes of the internal state of the file structure. |
| 245 | /// </summary> | 271 | /// </summary> |
| 246 | public void Dispose() | 272 | public void Dispose() |
diff --git a/src/wix/WixToolset.Core/CommandLine/BuildCommand.cs b/src/wix/WixToolset.Core/CommandLine/BuildCommand.cs index d07dd6aa..0db39480 100644 --- a/src/wix/WixToolset.Core/CommandLine/BuildCommand.cs +++ b/src/wix/WixToolset.Core/CommandLine/BuildCommand.cs | |||
| @@ -248,7 +248,7 @@ namespace WixToolset.Core.CommandLine | |||
| 248 | 248 | ||
| 249 | if (!this.Messaging.EncounteredError) | 249 | if (!this.Messaging.EncounteredError) |
| 250 | { | 250 | { |
| 251 | result.Library.Save(outputPath); | 251 | result.Library.SaveNew(outputPath); |
| 252 | 252 | ||
| 253 | this.LayoutFiles(result.TrackedFiles, null, cancellationToken); | 253 | this.LayoutFiles(result.TrackedFiles, null, cancellationToken); |
| 254 | } | 254 | } |
