Oppure

Loading
22/05/11 20:47
wolfensborg
Salve, è il mio primo messaggio nel forum chiedo scusa per la lunghezza ma ho preferito postare in toto gli errori.

Sto realizzando un progetto per il controllo di un tabellone via RS232 ho deciso di salvare la configurazione in un file chiamato Config.XML messo in my.resources

<?xml version="1.0" encoding="utf-8"?>
<Configurazione>
  <PortaSeriale>
    <Nome>COM10</Nome>
    <BaudRate>9600</BaudRate>
    <DataBits>8</DataBits>
    <Parità>Parity.None</Parità>
    <StopBits>StopBits.One</StopBits>
  </PortaSeriale>
  <Display>
    <Indirizzo>A</Indirizzo>
    <Luminosità>0</Luminosità>
  </Display>
</Configurazione>


In un modulo (mdlFunctions.vb) ho messo una variabile di tipo public :
Public path As String = Application.StartupPath & "\data\config.xml"


Nel form Parent nell'evento load vado a caricare il file con il
    xmldoc.Load(path)


in fase di progettazione quando vado a cliccare su "controllo Display.application" o su Setup.exe mi da questo tipo di errore

System.IO.FileNotFoundException: Impossibile trovare il file 'C:\Users\Wolfen\AppData\Local\Apps.02XJK8Q.O2T\QJLO7JPW.YMB\cont..tion_2aad5a4599cffa2f_0001.0000_43f0d44388412c4e\config.xml'.
Nome file: 'C:\Users\Wolfen\AppData\Local\Apps.02XJK8Q.O2T\QJLO7JPW.YMB\cont..tion_2aad5a4599cffa2f_0001.0000_43f0d44388412c4e\config.xml'
   in System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   in System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
   in System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
   in System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials)
   in System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
   in System.Xml.XmlTextReaderImpl.OpenUrlDelegate(Object xmlResolver)
   in System.Threading.CompressedStack.runTryCode(Object userData)
   in System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
   in System.Threading.CompressedStack.Run(CompressedStack compressedStack, ContextCallback callback, Object state)
   in System.Xml.XmlTextReaderImpl.OpenUrl()
   in System.Xml.XmlTextReaderImpl.Read()
   in System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
   in System.Xml.XmlDocument.Load(XmlReader reader)
   in System.Xml.XmlDataDocument.Load(XmlReader reader)
   in System.Xml.XmlDocument.Load(String filename)
   in System.Xml.XmlDataDocument.Load(String filename)
   in Controllo_Display.frmMain.frmMain_Load(Object sender, EventArgs e)
   in System.EventHandler.Invoke(Object sender, EventArgs e)
   in System.Windows.Forms.Form.OnLoad(EventArgs e)
   in System.Windows.Forms.Form.OnCreateControl()
   in System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   in System.Windows.Forms.Control.CreateControl()
   in System.Windows.Forms.Control.WmShowWindow(Message& m)
   in System.Windows.Forms.Control.WndProc(Message& m)
   in System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   in System.Windows.Forms.ContainerControl.WndProc(Message& m)
   in System.Windows.Forms.Form.WmShowWindow(Message& m)
   in System.Windows.Forms.Form.WndProc(Message& m)
   in System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   in System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Assembly caricati **************
mscorlib
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.5444 (Win7SP1GDR.050727-5400)
    Base di codice: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
Controllo Display
    Versione assembly: 1.0.0.0
    Versione Win32: 1.0.0.0
    Base di codice: file:///C:/Users/Wolfen/AppData/Local/Apps/2.0/492XJK8Q.O2T/QJLO7JPW.YMB/cont..tion_2aad5a4599cffa2f_0001.0000_43f0d44388412c4e/Controllo%20Display.exe
----------------------------------------
Microsoft.VisualBasic
    Versione assembly: 8.0.0.0
    Versione Win32: 8.0.50727.5420 (Win7SP1.050727-5400)
    Base di codice: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
    Base di codice: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
    Base di codice: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
    Base di codice: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
    Base di codice: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
    Base di codice: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Runtime.Remoting
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
    Base di codice: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
ComponentFactory.Krypton.Toolkit
    Versione assembly: 4.3.2.0
    Versione Win32: 4.3.2.0
    Base di codice: file:///C:/Windows/assembly/GAC_MSIL/ComponentFactory.Krypton.Toolkit/4.3.2.0__a87e673e9ecb6e8e/ComponentFactory.Krypton.Toolkit.dll
----------------------------------------
System.Windows.Forms.resources
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.4927 (NetFXspW7.050727-4900)
    Base di codice: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_it_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
System.Data
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
    Base di codice: file:///C:/Windows/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
mscorlib.resources
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.5444 (Win7SP1GDR.050727-5400)
    Base di codice: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------


Leggendo mi dice che non trova il file config.xml quindi ho provato a creare un setup con INNO SETUP ma questi mi da una serie di errori

DETTAGLI ERRORI
	Durante l'operazione sono stati rilevati gli errori seguenti.
	* [22/05/2011 22:43:18] System.Deployment.Application.DeploymentDownloadException (Sottotipo sconosciuto)
		- Impossibile scaricare file:///d:/My Program/Application Files/Controllo Display_1_0_0_0/Controllo Display.exe.manifest.
		- Origine: System.Deployment
		- Analisi dello stack:
			in System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)
			in System.Deployment.Application.SystemNetDownloader.DownloadAllFiles()
			in System.Deployment.Application.FileDownloader.Download(SubscriptionState subState)
			in System.Deployment.Application.DownloadManager.DownloadManifestAsRawFile(Uri& sourceUri, String targetPath, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation)
			in System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, IDownloadNotification notification, DownloadOptions options, Uri& appSourceUri, String& appManifestPath)
			in System.Deployment.Application.DownloadManager.DownloadApplicationManifest(AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, Uri& appSourceUri, String& appManifestPath)
			in System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp)
			in System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc)
			in System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
			in System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
		--- Eccezione interna ---
		System.Net.WebException
		- Impossibile trovare una parte del percorso 'd:\My Program\Application Files\Controllo Display_1_0_0_0\Controllo Display.exe.manifest'.
		- Origine: System
		- Analisi dello stack:
			in System.Net.FileWebRequest.EndGetResponse(IAsyncResult asyncResult)
			in System.Net.FileWebRequest.GetResponse()
			in System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)
		--- Eccezione interna ---
		System.Net.WebException
		- Impossibile trovare una parte del percorso 'd:\My Program\Application Files\Controllo Display_1_0_0_0\Controllo Display.exe.manifest'.
		- Origine: System
		- Analisi dello stack:
			in System.Net.FileWebResponse..ctor(FileWebRequest request, Uri uri, FileAccess access, Boolean asyncHint)
			in System.Net.FileWebRequest.GetResponseCallback(Object state)
		--- Eccezione interna ---
		System.IO.DirectoryNotFoundException
		- Impossibile trovare una parte del percorso 'd:\My Program\Application Files\Controllo Display_1_0_0_0\Controllo Display.exe.manifest'.
		- Origine: mscorlib
		- Analisi dello stack:
			in System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
			in System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath)
			in System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
			in System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync)
			in System.Net.FileWebStream..ctor(FileWebRequest request, String path, FileMode mode, FileAccess access, FileShare sharing, Int32 length, Boolean async)
			in System.Net.FileWebResponse..ctor(FileWebRequest request, Uri uri, FileAccess access, Boolean asyncHint)


Penso di essere io che non ho capito come funziona il build..


-- Aggiornamento 23/05 ---- (lo faccio qui perchè non so come rispondere visto che mi mancava il tasto Rispondi)

Sono riuscito a fare il setup copiando i files presenti nella cartella RELEASE ma quando vado ad aprire il programma mi da ACCESSO NEGATO al file Config.XML.

Poi ho visto che mi da mancante il componente KryptonToolkit (di cui utilizzo alcuni componenti free), come faccio a fargli controllare la presenza e nel caso ad installarlo come fa il Publish di VS2010

---- Grazie Daniele ----
Ultima modifica effettuata da wolfensborg 23/05/11 11:37
aaa
23/05/11 13:08
R0gerBlack
è vero che bisogna postare gli errori ma non in questo senso.. :-| ad ogni modo da quel che ho capito è che non trova il file config.xml

Tu hai scritto come riga di codice:

Public path As String = Application.StartupPath & "\data\config.xml"


Allora, innanzitutto ti consiglio di togliere Application.StartupPath perché non serve per questo genere di cose:
1. La Directory del programma è la sua directory di base, ad eccezione di operazioni particolari (tipo individuare la locazione del programma) non serve, cioè il programma per operare nella sua cartella basta che usa la directory di base ovvero niente, non so se mi spiego: Se nella cartella supponiamo che c'è l'eseguibile e un file ciao.txt, il programma basta che avrà la stringa "ciao.txt" e non Application.StartupPath..
2. La Directory di base, essendo locale Windows riconosce che il programma opera nel suo interno e che quindi non può arrecare danno a meno che a se stesso; invece se tu usi tutta la Directory, potresti benissimo star danneggiando file del computer che non ti riguardano (anche se in questo caso no), quindi per certe operazioni serviranno i requisiti di amministratore.

Anche se penso che il problema che non ti abbia fatto funzionare tutto sia il \ prima della cartella a prescindere da che modo hai ottenuto la directory, ovvero quando tu usi la directory di base o intera del programma, questa directory termina già con \ e quindi tu accavalleresti la directory (Debug\data\..), questo vale anche se tu vuoi usare quella Directory da programmi esterni

Un altro consiglio che ti do prima di concludere è di gestire l'errore: L'overflow viene dato quando l'errore non è gestito, se tu lo gestisci il programma sa di che errore stai parlando e lo mostrerà all'utente

Ecco come potresti risolvere
Public path As String = "data\config.xml"
'Se devi usare il path anche da programmi esterni usa
'Public path As String = Application.StartupPath & "data\config.xml"

        Try
            Xmldoc.loadfile(path)
        Catch ex As Exception
            'Errore generico, puoi approfondirlo con i vari Exception
            MsgBox("C'è stato un errore nella lettura del file", MsgBoxStyle.Critical)
        End Try


Fatto questo il file dovrebbe essere letto con la giusta directory, i giusti permessi di modifica e nel caso che non venga letto ti verrà mostrata la MsgBox
Ultima modifica effettuata da R0gerBlack 23/05/11 15:41
aaa