Ecrire dans un fichier avec File.AppendAllText

Signaler
-
 Utilisateur anonyme -
Bonjours à tous,

voilà, je fais un programme en VB.Net, et j'aurais certainement recours au VBS pour un script qui sera appelé par mon programme VB.Net. Mais il y a deux questions que je me pose:

- Est-ce qu'il est possible d'écrire via une TextBox dans un script (pour rajouter une instruction qui servira à lancé l'installation d'un programme avec son argument pour le mode silencieux)?
Un script comme celui ci par exemple: Discution VBS - Installation automatique*.

- Est-ce qu'il est possible aussi d'écrire, toujours via une TextBox, dans le programme vb.net pour pourvoir rajouter un autre objet à la suite de ma listOf (listeNomFichier.Add("nouveau nom"))?

Je sais qu'il existe des méthodes en VB.Net pour écrire dans des fichiers comme celles ci dessous, mais est-ce que c'est applicable à ces deux types de fichiers (script, et fichier.vb)?

Exemples pour des écritures:
File.WriteAllText: Méthode WriteAllText de la classe File permet d'écrire du texte dans
un fichier en redémarrant du début = Effacement du contenu d’avant.
File.AppendAllText: Méthode AppendAllText écrit à la suite du fichier.


Merci d'avance

6 réponses


Bonsoir,

On ne pose qu'une seule question par topic.
voilà, je fais un programme en VB.Net, et j'aurais certainement recours au VBS pour un script qui sera appelé par mon programme VB.Net

Je ne vois pas l'intérêt ?
Tu peux préciser pourquoi tu ne réalise pas tout en VB.NET ?
Bonjour Banana32,

J'ai eu le temps de la réflexion après maintes recherches, et j'en suis venue à conclure que oui, tout sera réalisé en VB.Net. Je ne voyait pas vraiment comment réaliser ça en VB.Net lorsqu'on commence à s'attaquer à l'installation même d'un fichier en faite, mais maintenant je vois .

Pour plus d'explications:
Dans mon programme d'installation automatique & silencieuse "Silence", même s'il sera finit et mis en production, les techniciens informatique souhaiteront certainement rajouter d'autres logiciels dans le programme "Silence" pour qu'ils aient la possibilité de les installer eux aussi le mode silencieux. Mais cela implique des modifications dans le code: rajouter les instructions nécessaires aux nouveaux logiciels pour qu'ils soient pris en compte par le programme. Et je souhaiterai savoir s'il est possible que les techniciens fassent cette modification, sans qu'il est à chercher dans eux même dans le programme. Pour cela, sur mon interface, j'ai eu l'idée de mettre une TextBox à disposition pour rentrer le code nécessaire (pas n'importe comment non plus, ils auront des explications fournis de ce qui faut coder exactement) Ce code, je souhaite qu'il soit écrit à la suite des autres scripts (fichier.vb).
Il y aura un ajout à la liste d'objets (que tu m'avais précédemment conseillé de faire dans un autre topic): listNomFichier.Add("vlc.exe")
et un rajout d'instruction pour indiquer de l'installer en silencieux:
Process.Start(New ProcessStartInfo("vlc-1.1.0-win32.exe", "/S /norestart"))
Est-ce qu'il est possible d'effectuer une écriture dans un fichier.vb?

Tu peux faire un petit système comme celui-ci par exemple :
Option Strict On
Public Class Form1
    Dim Lv As New ListView With {.View View.Details, .Parent Me, .Width = 300}

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'ajout des colonnes
        Lv.Columns.AddRange({New ColumnHeader With {.Text "Nom", .Width 150}, New ColumnHeader With {.Text = "Commande", .Width = 150}})
        'abonnement événement
        AddHandler Lv.ItemSelectionChanged, AddressOf Lv_Select
        Dim xml As New Elements
        If Not My.Computer.FileSystem.FileExists("sauv.xml") Then
            'ajout éléments (peut être placé dans un bouton)
            Dim item As New Element With {.Nom "vlc", .Commande "/s /norestart"}

            xml.add(item)

            item New Element With {.Nom "photopshop", .Commande = "/s /blabla"}
            xml.add(item)

            Using writer As New IO.StreamWriter("sauv.xml")
                Dim ser As New Xml.Serialization.XmlSerializer(GetType(Elements))
                ser.Serialize(writer, xml)
            End Using
        Else
            'lecture sauvegarde
            Using reader As New IO.StreamReader("sauv.xml")
                Dim ser As New Xml.Serialization.XmlSerializer(GetType(Elements))
                xml = CType(ser.Deserialize(reader), Elements)
            End Using

        End If
        'affichage dans la listview
        For Each item As Element In xml.Liste
            Dim it As New ListViewItem(item.Nom)
            it.SubItems.Add(item.Commande)
            Lv.Items.Add(it)
        Next
    End Sub

    Private Sub Lv_Select(ByVal sender As Object, ByVal e As ListViewItemSelectionChangedEventArgs)
        If e.IsSelected Then
            'lancement du programme
            Process.Start(New ProcessStartInfo(Lv.SelectedItems(0).Text, Lv.SelectedItems(0).SubItems(1).Text))
        End If
    End Sub

End Class

'classes x2 pour serialisation
Public Class Elements
    Public Liste As New List(Of Element)
    Sub New()
    End Sub
    Sub add(ByVal item As Element)
        Liste.Add(item)
    End Sub
End Class

Public Class Element
    Public Nom As String
    Public Commande As String
    Sub New()
    End Sub
End Class

En récupérant les données de l'argument e on peut simplifier :
Private Sub Lv_Select(ByVal sender As Object, ByVal e As ListViewItemSelectionChangedEventArgs)
   If e.IsSelected Then
       'lancement du programme
       Process.Start(New ProcessStartInfo(e.item.Text, e.item.SubItems(1).Text))
   End If
End Sub
J'aurais pas été capable de pondre ça! Faut que je me l'imprime dans la tête pour la prochaine fois... Et en faite, là tout passe par une listView, y compris la saisie pour un ajout?
Ca aurait été plus simple de passer par une base de données SQL pour les ajouts... mais pour ceux de la boite, peut être pas...

Je mettrais tes conseils en application dès que j'aurais fini avec Process.Start
Merci beaucoup Banana32.

Tu peux bien sur stocker ces données d'une autre manière.
Je t'ai proposé la solution du xml car cela suffit pour des quantités de données peu importantes...