diff --git a/cmd/flux/install.go b/cmd/flux/install.go
index 206d995254927e5424848cbdd7eb3ebc39d6044a..c0d62660a36492616c98c34ceaeccb7406cbedd7 100644
--- a/cmd/flux/install.go
+++ b/cmd/flux/install.go
@@ -21,7 +21,6 @@ import (
 	"fmt"
 	"os"
 	"path/filepath"
-	"strings"
 	"time"
 
 	"github.com/spf13/cobra"
@@ -177,9 +176,6 @@ func installCmdRun(cmd *cobra.Command, args []string) error {
 	}
 
 	if installArgs.export {
-		fmt.Println("---")
-		fmt.Println("# Flux version:", installArgs.version)
-		fmt.Println("# Components:", strings.Join(components, ","))
 		fmt.Print(manifest.Content)
 		fmt.Println("---")
 		return nil
diff --git a/pkg/manifestgen/install/install.go b/pkg/manifestgen/install/install.go
index 373b19e48e757754387ae6392fd4288c7eb4af9e..ce6d1e1902f48cb2b0c58b31155b0a10022b629d 100644
--- a/pkg/manifestgen/install/install.go
+++ b/pkg/manifestgen/install/install.go
@@ -84,7 +84,7 @@ func Generate(options Options, manifestsBase string) (*manifestgen.Manifest, err
 
 	return &manifestgen.Manifest{
 		Path:    path.Join(options.TargetPath, options.Namespace, options.ManifestFile),
-		Content: string(content),
+		Content: fmt.Sprintf("%s\n%s", GetGenWarning(options), string(content)),
 	}, nil
 }
 
@@ -142,3 +142,11 @@ func ExistingVersion(version string) (bool, error) {
 		return false, fmt.Errorf("GitHub API returned an unexpected status code (%d)", res.StatusCode)
 	}
 }
+
+// GetGenWarning generates a consistent generation warning in the install and bootstrap case in the following format:
+// # This manifest was generated by flux. DO NOT EDIT.
+// # Flux version: v0.21.1
+// # Components: source-controller,kustomize-controller,helm-controller,notification-controller,image-reflector-controller,image-automation-controller
+func GetGenWarning(options Options) string {
+	return fmt.Sprintf("---\n%s\n# Flux Version: %s\n# Components: %s", manifestgen.GenWarning, options.Version, strings.Join(options.Components, ","))
+}
diff --git a/pkg/manifestgen/install/install_test.go b/pkg/manifestgen/install/install_test.go
index eab771ad51f6135db7b7ff46e421fbbb718d04ba..d9dc77894ee43554d44dbe0f189403204f173f81 100644
--- a/pkg/manifestgen/install/install_test.go
+++ b/pkg/manifestgen/install/install_test.go
@@ -41,5 +41,10 @@ func TestGenerate(t *testing.T) {
 		t.Errorf("toleration key '%s' not found", opts.TolerationKeys[0])
 	}
 
+	warning := GetGenWarning(opts)
+	if !strings.HasPrefix(output.Content, warning) {
+		t.Errorf("Generation warning '%s' not found", warning)
+	}
+
 	fmt.Println(output)
 }
diff --git a/pkg/manifestgen/manifest.go b/pkg/manifestgen/manifest.go
index 693b22ebe67a85bacf6c0a73c5d94778712fd04c..db385f69df289f3cfc03786b1fe1fd0a746834d5 100644
--- a/pkg/manifestgen/manifest.go
+++ b/pkg/manifestgen/manifest.go
@@ -24,7 +24,7 @@ import (
 	securejoin "github.com/cyphar/filepath-securejoin"
 )
 
-const GenWarning = "# This manifest was generated by flux bootstrap. DO NOT EDIT."
+const GenWarning = "# This manifest was generated by flux. DO NOT EDIT."
 
 // Manifest holds the data of a multi-doc YAML
 type Manifest struct {