Example #1
0
        private Application FindOrCreateApplication(ApplicationManagementClient proxy)
        {
            var applications = GetAllApplications(proxy);

            if (InstallFilePath.ToUpperInvariant().EndsWith(".MSI"))
            {
                var info = SimpleMsiReader.GetMsiInfo(InstallFilePath);
                Version = info.ProductVersion;
                if (string.IsNullOrEmpty(InstallCommandLine))
                {
                    InstallCommandLine = String.Format("/i \"{0}\" /qn", Path.GetFileName(InstallFilePath));
                }
                var app = applications.SingleOrDefault(p => p.ProductCode == info.ProductCode);
                if (app == null)
                {
                    app = proxy.CreateApplication(
                        new NewApplication
                    {
                        ApplicationFolderId         = 1,
                        ApplicationFormalName       = info.ProductName,
                        ProductCode                 = info.ProductCode,
                        CreatedByUserName           = Environment.UserName,
                        CustomDeviceHandlerModuleId = 4
                    });

                    LogMessage(MessageImportance.Low,
                               String.Format("Created new application '{0} ({1})' already exists", info.ProductName,
                                             info.ProductCode));
                }
                else
                {
                    LogMessage(MessageImportance.Low,
                               String.Format("Application '{0} ({1})' already exists", info.ProductName,
                                             info.ProductCode));
                }
                return(app);
            }

            if (InstallFilePath.ToUpperInvariant().EndsWith(".CAB"))
            {
                var name = GetApplicationNameFromCabFile(InstallFilePath);

                var app = applications.SingleOrDefault(p => p.ApplicationFormalName == name);
                if (app == null)
                {
                    app = proxy.CreateApplication(
                        new NewApplication
                    {
                        ApplicationFolderId         = 1,
                        ApplicationFormalName       = name,
                        CreatedByUserName           = Environment.UserName,
                        CustomDeviceHandlerModuleId = 3
                    });

                    LogMessage(MessageImportance.Low, String.Format("Created new application '{0}'", name));
                }
                else
                {
                    LogMessage(MessageImportance.Low, String.Format("Application '{0}' already exists", name));
                }
                return(app);
            }

            throw new NotImplementedException("Only CAB and MSI files are supported");
        }