//go:build windows package installer import ( "fmt" "syscall" ) func syncDirectoryPath(path string) error { pathPointer, err := syscall.UTF16PtrFromString(path) if err != nil { return fmt.Errorf("encode directory path: %w", err) } handle, err := syscall.CreateFile( pathPointer, syscall.GENERIC_READ|syscall.GENERIC_WRITE, syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE, nil, syscall.OPEN_EXISTING, syscall.FILE_FLAG_BACKUP_SEMANTICS, 0, ) if err != nil { return fmt.Errorf("open directory handle: %w", err) } if err := syscall.FlushFileBuffers(handle); err != nil { _ = syscall.CloseHandle(handle) return fmt.Errorf("flush directory handle: %w", err) } if err := syscall.CloseHandle(handle); err != nil { return fmt.Errorf("close directory handle: %w", err) } return nil }