public override bool Execute()
        {
            var result = false;

            Log.LogMessage("Sitecore Ship Upload Start: {0}", FilePath);

            if (File.Exists(FilePath))
            {
                try
                {

                    HostName = HostName.TrimEnd('/');
                    string absolutUrl = string.Format("{0}{1}", HostName, Path);

                    Log.LogMessage("Sitecore Ship Upload: Pushing to {0}", absolutUrl);

                    if (PackageId > 0 && !string.IsNullOrEmpty(Description))
                    {
                        //this is hack for now
                        absolutUrl = absolutUrl +
                                     string.Format("?packageId={0}&description={1}", PackageId, Description);
                    }

                    Log.LogWarning("Sitecore Ship Upload Finished to {0}, timeout {1}", absolutUrl, Timeout == 0 ? 100 : Timeout);

                    WebClientEx client = new WebClientEx();
                    client.Timeout = Timeout == 0 ? 100 : Timeout;
                    client.UploadFile(absolutUrl, "POST", FilePath);
                    result = true;

                    Log.LogMessage("Sitecore Ship Upload Finished: {0}", FilePath);

                }
                catch (Exception ex)
                {
                    Log.LogErrorFromException(ex, true);
                }
            }
            else
            {
                Log.LogError(string.Format("Sitecore Ship Upload Failed: Failed to find file {0}", FilePath));

            }

            return result;
        }