Salve a tutti!![]()
Giorni fa ho cominciato a scrivere un programma da "distribuire" ai miei utenti, con funzione di registrazione/login. Portando avanti il progetto, sono stato costretto a realizzare un installer che un installer non è: ho sfruttato tutte le classi che avrei potuto usare per creare e scrivere i file. Il problema sta in una fase dell'installazione... comincio da principio:
- Creo tre file .phx (mia estensione, letta come .txt), e scrivo su uno di essi. "logged.phx" per far sì che il programma possa capire se il login è stato fatto o meno, "user.phx" contenente i dati inseriti alla registrazione, "lpath.phx" contenete la "directory di lavoro" del programma. Scrivo solo sull'ultimo dei tre...
Ok, il codice dà errore in questa riga:codice:Imports System.IO.File Dim name1 As String = "logged.phx" Dim name2 As String = "user.phx" Dim name3 As String = "lpath.phx" 'Scrivo la parte di codice interessata TextBox1.Text = TextBox1.Text & vbCrLf & "Creo file: " & name1 Create(name1) TextBox1.Text = TextBox1.Text & vbCrLf & "Creo file: " & name2 Create(name2) TextBox1.Text = TextBox1.Text & vbCrLf & "Creo file: " & name3 Create(name3) Dim writer As New IO.StreamWriter("lpath.phx") writer.Write(Environment.CurrentDirectory) writer.Close()"File già in uso da un altro processo."codice:Dim writer As New IO.StreamWriter("lpath.phx")
Da quale processo può mai essere usato? Non ci sono altri StreamWriter, quindi il rischio che ve ne sia uno già aperto non c'è. Allego anche il codice per intero, magari il problema sta altrove...
Suggerimenti? Grazie anticipatamente per eventuali risposte!codice:Imports System.IO.File Public Class Form2 Dim time As Integer = 10 'Variabile per un countdown Dim time2 As Integer = 1 'Vedi il commento su Dim name1 As String = "logged.phx" Dim name2 As String = "user.phx" Dim name3 As String = "lpath.phx" Dim path As String Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick time = time - 1 Label2.Text = time If time = 0 Then Label2.Text = "" Label1.Text = "Installazione avviata." Timer1.Stop() 'Uso il timer per fare l'installazione... If Form1.TextBox1.Text = "C:\Users\" & Environment.UserName & "\COD_Wii_Clans" Then TextBox1.Text = TextBox1.Text & vbCrLf & "Imposto cartella di lavoro: " & "C:\Users\" & Environment.UserName Environment.CurrentDirectory = "C:\Users\" & Environment.UserName End If TextBox1.Text = TextBox1.Text & vbCrLf & "Imposto cartella di lavoro: " & Form1.TextBox1.Text Environment.CurrentDirectory = Form1.TextBox1.Text TextBox1.Text = TextBox1.Text & vbCrLf & "Creo directory: " & Form1.TextBox1.Text MkDir(Form1.TextBox1.Text & "\COD_Wii_Clans") Environment.CurrentDirectory = Form1.TextBox1.Text & "\COD_Wii_Clans" path = Form1.TextBox1.Text & "\COD_Wii_Clans" TextBox1.Text = TextBox1.Text & vbCrLf & "Creo file: " & name1 Create(name1) TextBox1.Text = TextBox1.Text & vbCrLf & "Creo file: " & name2 Create(name2) TextBox1.Text = TextBox1.Text & vbCrLf & "Creo file: " & name3 Create(name3) FileClose() 'Tento di chiudere tutti i processi in modo bruto, niente da fare. TextBox1.Text = TextBox1.Text & vbCrLf & "Definisco files precedentemente creati..." TextBox1.Text = TextBox1.Text & vbCrLf & "Scarico eseguibile e librerie correlate..." Timer2.Start() Reset() 'Tento di chiudere tutti i processi in modo bruto, niente da fare. End If End Sub Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Timer1.Start() End Sub Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick time2 = time2 - 1 If time2 = 0 Then Timer2.Stop() Reset() 'Tento di chiudere tutti i processi in modo bruto, niente da fare. Dim writer As New IO.StreamWriter("lpath.phx") writer.Write(Environment.CurrentDirectory) writer.Close() My.Computer.Network.DownloadFile("http://phoenixstyle.altervista.org/Call_of_Duty_Wii_Clan/COD_Wii_Clans.exe", path & "\COD_Wii_Clans1.0a2.exe") End If End Sub End Class![]()

Rispondi quotando