public MsiOperation(string packageName, Uri srcMsiUri, InstallOptions.InstallOptionsValues installOptions = null)
 {
     _packageName = packageName;
     _srcMsiUri = srcMsiUri;
     _installOptions = installOptions;
     _srcType = FileSourceType.Url;
 }
 public MsiOperation(string packageName, string srcMsiFilePath, InstallOptions.InstallOptionsValues installOptions = null)
 {
     _packageName = packageName;
     _srcMsiFilePath = srcMsiFilePath;
     _installOptions = installOptions;
     _srcType = FileSourceType.File;
 }
 public InstallExecutableOperation(string packageName, Uri srcExecutableUri, string exeParams, InstallOptions.InstallOptionsValues values)
 {
     _packageName = packageName;
     _srcExecutableUri = srcExecutableUri;
     _exeParams = exeParams;
     _values = values;
     _sourceType = FileSourceType.Url;
 }
 public InstallExecutableOperation(string packageName, string srcExecutableFilePath, string exeParams, InstallOptions.InstallOptionsValues values)
 {
     _packageName = packageName;
     _srcExecutableFilePath = srcExecutableFilePath;
     _exeParams = exeParams;
     _values = values;
     _sourceType = FileSourceType.File;
 }
 /// <summary>
 /// Use this for installing packages that are not an MSI (.msi extension). Typically an 
 /// executable (.exe) followed by a set of parameters to make the installation 
 /// non-interactive (silent).
 /// </summary>
 /// <param name="install"></param>
 /// <param name="packageName">A uniqe package name (DisplayName in Windows Registry) to make this 
 /// operation idempotent. If this package name is not correct, ConDep will install this package 
 /// on every execution. ConDep looks in these three registry keys for installed software packages: 
 /// HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
 /// HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall
 /// HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall</param>
 /// <param name="srcExecutableUri">A URI to the custom package</param>
 /// <param name="exeParams">Parameters needed by the package to install silently, logging etc.</param>
 /// <returns></returns>
 public static IOfferRemoteInstallation Custom(this IOfferRemoteInstallation install, string packageName, Uri srcExecutableUri, string exeParams, Action<IOfferInstallOptions> options = null)
 {
     var installOptions = new InstallOptions();
     if (options != null)
     {
         options(installOptions);
     }
     var exeOperation = new InstallExecutableOperation(packageName, srcExecutableUri, exeParams, installOptions.Values);
     Configure.Operation(install, exeOperation);
     return install;
 }
 /// <summary>
 /// Installs MSI package on remote server using the URI to the MSI package. 
 /// ConDep will first download the MSI package to the server and then install the package.
 /// </summary>
 /// <param name="install"></param>
 /// <param name="packageName">A uniqe package name (DisplayName in Windows Registry) to make this 
 /// operation idempotent. If this package name is not correct, ConDep will install this package 
 /// on every execution. ConDep looks in these three registry keys for installed software packages: 
 /// HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
 /// HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall
 /// HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall</param>
 /// <param name="srcMsiUri">A URI to the MSI package</param>
 /// <param name="options">Additional options to pass in to msiexec.</param>
 /// <returns></returns>
 public static IOfferRemoteInstallation Msi(this IOfferRemoteInstallation install, string packageName, Uri srcMsiUri, Action<IOfferInstallOptions> options)
 {
     var msiOptions = new InstallOptions();
     options(msiOptions);
     var msiOperation = new MsiOperation(packageName, srcMsiUri, msiOptions.Values);
     Configure.Operation(install, msiOperation);
     return install;
 }