Προς το περιεχόμενο

msiexec /i


sanidas

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα,

Γράφω μία εφαρμογή 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 γιατί το θεωρώ ταλαιπωρία

Δημοσ.

- μήπως το path περιέχει κενά και θέλει quotes?

- μήπως το path είναι remote και το client pc δεν έχει δικαίωμα πρόσβασης?

- μήπως ο client τρέχει σαν service?

- o server σε τι OS τρέχει?

- δοκίμασες την ίδια σύνταξη manually να δεις αν δουλεύει?

- δοκίμασες το /l switch για να δεις τι σφάλμα σου επιστρέφει?

- ...

Δημοσ.
- μήπως το 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 που το τοποθετώ.

Δημοσ.

Το 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.

Δημοσ.

Το 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.

 

 

 

:cry:

Δημοσ.

Δεν βλέπω (από τα logs) που είναι το πρόβλημα, εκτός και αν κάτι μου διαφεύγει...

 

Φαντάζομαι, έχεις κατά νου ότι το non-interactive installation αφορά by default τον current user (στην περίπτωσή σου: localsystem ), εκτός και αν γίνει χρήση του ALLUSERS=1. Υποθέτω, από τα logs, πως έγινε install για localsystem την πρώτη φορά (μετά το copy ίσως), και τη δεύτερη έγινε "configured". Μπαίνοντας σαν admin, δεν μπορείς να δεις το προφίλ του localsystem.

 

Μη συγχύζεσαι...

Δημοσ.

Θεωρούσα ότι ο χρήστης local system είναι αυτός του administrator. To οποίο σημαίνει ότι η εγκατάσταση γινόταν αλλά εγώ δεν την έβλεπα. Για αυτόν ακριβός τον λόγω στην λίστα με τα προγράμματα που έπαιρνα μέσω wmi το πρόγραμμα εμφανιζόταν 2 φορές. Με την χρήση της παραμέτρου /jm η εγκατάσταση γίνεται για όλους τους χρήστες ή /ju για τον τρέχων χρήστη.

 

Σε ευχαριστώ πολύ για τον χρόνο σου.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...