@@ -178,6 +178,71 @@ public class InstallationConfig : ITomlMetadataProvider
178178 [ DataMember ( Name = "source_dirs_are_recursive" ) ]
179179 public bool ? DirsRecursive { get ; set ; }
180180
181+ /// <summary>
182+ /// Configuration for code signing the MSI and installed files.
183+ /// </summary>
184+ [ DataMember ( Name = "signing" ) ]
185+ public SigningConfig ? Signing { get ; set ; }
186+ public class SigningConfig : ITomlMetadataProvider
187+ {
188+ [ IgnoreDataMember ]
189+ public TomlPropertiesMetadata ? PropertiesMetadata { get ; set ; }
190+
191+ /// <summary>
192+ /// Name of the PFX File or the certificate in the certificate store to use for signing.
193+ /// </summary>
194+ [ DataMember ( IsRequired = true , Name = "cert_name" ) ]
195+ public string CertificateName { get ; set ; } = "" ;
196+
197+ /// <summary>
198+ /// PFX file password. Shouldn't be provided in the config for security reasons.
199+ /// </summary>
200+ [ IgnoreDataMember ] public string ? Password { get ; set ; } = null ;
201+
202+ /// <summary>
203+ /// Description to include in the signature. E.g. My Company MyApp.
204+ /// </summary>
205+ [ DataMember ( IsRequired = true , Name = "description" ) ]
206+ public string Description { get ; set ; } = "" ;
207+
208+ /// <summary>
209+ /// URL to the timestamping server.
210+ /// </summary>
211+ [ DataMember ( Name = "time_url" ) ]
212+ public string ? TimeUrl { get ; set ; }
213+
214+ /// <summary>
215+ /// Type of the certificate store. May be "sha1", "name" or "pfx". Defaults to "pfx".
216+ /// </summary>
217+ [ DataMember ( Name = "store_type" ) ]
218+ public string ? StoreType { get ; set ; }
219+
220+ /// <summary>
221+ /// Hash algorithm to use for signing. May be "sha1" or "sha256". Defaults to "sha256".
222+ /// </summary>
223+ [ DataMember ( Name = "algorithm" ) ]
224+ public string ? HashAlgorithm { get ; set ; }
225+
226+ /// <summary>
227+ /// Additional arguments to pass to signtool
228+ /// </summary>
229+ [ DataMember ( Name = "extra_arguments" ) ]
230+ public string ? ExtraArguments { get ; set ; }
231+
232+ /// <summary>
233+ /// Folder where signtool.exe is located. If not specified, it is assumed to be in the PATH. May include multiple ; separated paths.
234+ /// </summary>
235+ [ DataMember ( Name = "signtool_location" ) ]
236+ public string ? SignToolLocation { get ; set ; }
237+
238+ /// <summary>
239+ /// Sign all files embedded in the MSI as well. This includes Program files and DLLs of the App you're shipping unless they are already signed.
240+ /// Note: The signing is performed in place on your source files, so make sure to have backups if needed.
241+ /// </summary>
242+ [ DataMember ( Name = "sign_embedded" ) ]
243+ public bool ? SignEmbeddedFiles { get ; set ; }
244+ }
245+
181246 [ DataMember ( Name = "env_vars" ) ]
182247 public List < EnvVarConfig > EnvironmentVariables { get ; } = [ ] ;
183248 public class EnvVarConfig : ITomlMetadataProvider
0 commit comments