sanidas Δημοσ. 5 Μαΐου 2009 Δημοσ. 5 Μαΐου 2009 Καλημέρα, Γράφω μία εφαρμογή client-server σε vb.net. όταν ο server στείλει το μήνυμα “Install \\path” τότε ο client εκτελεί την παρακάτω συνάρτηση: >Private Sub InstallSoftware(ByVal Path As String) Try Dim shell, systempath shell = CreateObject("WScript.Shell") systempath = shell.ExpandEnvironmentStrings("%SystemRoot%") shell.Run(systempath & "\system32\msiexec.exe /i " & Path & " /quiet") 'shell.Run("msiexec.exe /i /q " & Path & " /quiet") Catch ex As Exception Logger(ex, "installSoftware") End Try End Sub Η συνάρτηση αυτή εκτελείτε κανονικά χωρίς να έχω κάποιο exception αλλά παρόλα αυτά η εφαρμογή (path) δεν εγκαθιστάτε. Το περίεργο είναι ότι η παρόμοια συνάρτηση για uninstall προγραμμάτων δουλεύει κανονικά. Αυτό που υποψιάζομαι είναι ότι κάτι παίζει με τα δικαιώματα και δεν με αφήνει να εκτελέσω την εντολή msiexec.exe /i. Το client pc είναι windows xp sp3. Δώστε καμιά ιδέα γιατί έχω στερέψει. Μόνο μην μου πείτε να μπλέξω με wmi γιατί το θεωρώ ταλαιπωρία
fromaz Δημοσ. 5 Μαΐου 2009 Δημοσ. 5 Μαΐου 2009 - μήπως το path περιέχει κενά και θέλει quotes? - μήπως το path είναι remote και το client pc δεν έχει δικαίωμα πρόσβασης? - μήπως ο client τρέχει σαν service? - o server σε τι OS τρέχει? - δοκίμασες την ίδια σύνταξη manually να δεις αν δουλεύει? - δοκίμασες το /l switch για να δεις τι σφάλμα σου επιστρέφει? - ...
sanidas Δημοσ. 5 Μαΐου 2009 Μέλος Δημοσ. 5 Μαΐου 2009 - μήπως το path περιέχει κενά και θέλει quotes?- μήπως το path είναι remote και το client pc δεν έχει δικαίωμα πρόσβασης? - μήπως ο client τρέχει σαν service? - o server σε τι OS τρέχει? - δοκίμασες την ίδια σύνταξη manually να δεις αν δουλεύει? - δοκίμασες το /l switch για να δεις τι σφάλμα σου επιστρέφει? - ... H σύνταξη της εντολής είναι σωστή. Η εντολή τρέχει κανονικά όταν αυτή εισάγεται χειροκίνητα από εμένα σε cmd. Ούτος η άλλως η αντίστοιχη συνάρτηση για uninstall τρέχει κανονικά. Το server κομμάτι του προγράμματος είναι σε vista. Όντως το client κομμάτι είναι windows service(Why?). Δικαιώματα πρόσβασης έχω στον απομακρυσμένο φάκελο( θα κοιτάξω αν δουλεύει και με τοπική διαδρομή) . To /switch δεν το δοκίμασα αλλά υποθέτω ότι αν χτυπήσει θα κάνει catch το error και θα το δω στο logfile που το τοποθετώ.
fromaz Δημοσ. 5 Μαΐου 2009 Δημοσ. 5 Μαΐου 2009 Το service με τι account τρέχει? αν είναι localsystem, τότε δεν έχεις πρόσβαση στο δίκτυο. Επιπροσθέτως, Vista (με UAC ενεργό) δεν επιτρέπει non-interactive (remote) login. Αν το XP του client είναι home edition τότε δεν μπορεί να κάνει join domain. Επειδή τα user-rights είναι μανούρα, σου συνιστώ να κάνεις copy μέσω tcp/ip το msi στον client και να το τρέξεις τοπικά. Εναλλακτικά, κοίτα το psexec του Russinovich. Το χρησιμοποιούν πολλοί remote installers.
sanidas Δημοσ. 7 Μαΐου 2009 Μέλος Δημοσ. 7 Μαΐου 2009 Το Service είναι local system. Έκανα copy τοπικά το .msi αλλά τπτ. Δοκίμασα να τρέξω το service σαν Administrator αλλά τπτ. Το XP είναι professional sp3. Δοκίμασα να τρέξω την εντολή σαν administrator( ranas /user:Administrator msiexec.exe /i localpath ) αλλά τπτ. Σαν event log του συστήματος δεν μου καταχωρεί τπτ. Κατέβασα τον windows installer 4.5 μήπως και… .Τέλος εκτέλεσα την εντολή “msiexec.exe /i path /lime c:\test” δύο φορές, μία χεράτα από cmd και μία μέσω του service. H εντολή εκτελέστηκε για το ίδιο path με αποτέλεσμα δύο διαφορετικά αρχεία. Λόγω του μεγέθους αυτών παραθέτω τις τελευταίες γραμμές Το αποτέλεσμα από την εκτέλεση της εντολής μέσω του service: MSI (s) (E4:88) [09:20:45:375]: Product: Design Overview -- Configuration completed successfully. MSI (s) (E4:88) [09:20:45:375]: Ο Windows Installer ρύθμισε το προϊόν. Όνομα προϊόντος: Design Overview. Έκδοση προϊόντος: 1.0.0. Γλώσσα προϊόντος: 1033. Κατάσταση επιτυχίας ή σφάλματος της ρύθμισης: 0. Το αποτέλεσμα από την εκτέλεση της εντολής μέσω cmd: MSI (s) (E4:20) [09:26:01:468]: Product: Design Overview -- Installation completed successfully. MSI (s) (E4:20) [09:26:01:468]: Ο Windows Installer εγκατέστησε το προϊόν. Όνομα προϊόντος: Design Overview. Έκδοση προϊόντος: 1.0.0. Γλώσσα προϊόντος: 1033. Κατάσταση επιτυχίας ή σφάλματος της εγκατάστασης: 0.
fromaz Δημοσ. 7 Μαΐου 2009 Δημοσ. 7 Μαΐου 2009 Δεν βλέπω (από τα logs) που είναι το πρόβλημα, εκτός και αν κάτι μου διαφεύγει... Φαντάζομαι, έχεις κατά νου ότι το non-interactive installation αφορά by default τον current user (στην περίπτωσή σου: localsystem ), εκτός και αν γίνει χρήση του ALLUSERS=1. Υποθέτω, από τα logs, πως έγινε install για localsystem την πρώτη φορά (μετά το copy ίσως), και τη δεύτερη έγινε "configured". Μπαίνοντας σαν admin, δεν μπορείς να δεις το προφίλ του localsystem. Μη συγχύζεσαι...
sanidas Δημοσ. 7 Μαΐου 2009 Μέλος Δημοσ. 7 Μαΐου 2009 Θεωρούσα ότι ο χρήστης local system είναι αυτός του administrator. To οποίο σημαίνει ότι η εγκατάσταση γινόταν αλλά εγώ δεν την έβλεπα. Για αυτόν ακριβός τον λόγω στην λίστα με τα προγράμματα που έπαιρνα μέσω wmi το πρόγραμμα εμφανιζόταν 2 φορές. Με την χρήση της παραμέτρου /jm η εγκατάσταση γίνεται για όλους τους χρήστες ή /ju για τον τρέχων χρήστη. Σε ευχαριστώ πολύ για τον χρόνο σου.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.