[AIDE] Problème avec outil d'empaquetage et déploiement VB6. [Résolu]

Messages postés
101
Date d'inscription
lundi 4 mai 2015
Dernière intervention
11 janvier 2018
- - Dernière réponse : NeriXs
Messages postés
101
Date d'inscription
lundi 4 mai 2015
Dernière intervention
11 janvier 2018
- 27 mai 2015 à 15:02
Bonjour,
J'ai un petit problème après la création d'une installation via l'outil de VB6.
Une fois l'installation terminée mon applie me crée un fichier texte en :
C:\Users\Moi\AppData\Local\VirtualStore\Program Fles (x86)\MonProjet\Mon_Fichier.txt

Après test, il semble que ce fichier texte devrait etre en :
C:\Program Files (x86)\MonProjet\Mon_Fichier.txt


J'essaie de changer cela lors de la création de mon installation mais, il semble que je n'emploie pas la bonne "syntaxe" ou n'agis pas ou il faudrait !!
Pouvez-vous m'aider ?

Ps: Installation sous Windows 7 x64.
Afficher la suite 

Votre réponse

13 réponses

Messages postés
14390
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 mars 2019
154
0
Merci
Executes-tu le setup en tant qu'administrateur ?
Commenter la réponse de NHenry
Messages postés
101
Date d'inscription
lundi 4 mai 2015
Dernière intervention
11 janvier 2018
0
Merci
Effectivement ça fonctionne en exécutant le Setup en tant qu'administrateur, merci:)
Existe t-il un moyen de le faire automatiquement ou bien de détecter que cela n'a pas été fait et d'en être informé ?
NHenry
Messages postés
14390
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 mars 2019
154 -
Pas avec le gestionnaire d'empaquetage de VB6, trop vieux.
Regardes du côté d'InnoSetup.
Commenter la réponse de NeriXs
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
264
0
Merci
Bonjour,
Il faut le faire à l'aide d'une commande runas. Cette dernière n'aura toutefois aucune chance de succès si elle n'est pas lancée par un administrateur (heureusement !)
Il faut donc avant toute autre tentative, vérifier que celui sui lance ce setup est bien un administrateur (et qu'il est donc autorisé à lancer ensuite un runas).
J'avais l'habitude de procéder à une telle vérification liminaire de la manière suivante, sous XP :

Private Declare Function IsNTAdmin Lib "advpack.dll" (ByVal dwReserved As Long, ByRef lpdwReserved As Long) As Long

Private Sub Command1_Click()
MsgBox est_administrateur()
End Sub
Private Function est_administrateur() As Boolean
est_administrateur = CBool(IsNTAdmin(ByVal 0&, ByVal 0&))
End Function

Commence par vérifier que ce code fonctionne avec d'autres OS.
On verra ensuite le reste.

Commenter la réponse de ucfoutu
Messages postés
101
Date d'inscription
lundi 4 mai 2015
Dernière intervention
11 janvier 2018
0
Merci
Bonjour,

Cela sous-entend que le Setup doit être lancé depuis un compte administrateur.
Votre code fonctionne sous Windows 7 32 et 64 bits.
Commenter la réponse de NeriXs
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
264
0
Merci
Cela sous-entend que le Setup doit être lancé depuis un compte administrateur

Quelque-chose n'était pas clair ?
Il faut le faire à l'aide d'une commande runas. Cette dernière n'aura toutefois aucune chance de succès si elle n'est pas lancée par un administrateur (heureusement !)


Il faut donc avant toute autre tentative, vérifier que celui sui lance ce setup est bien un administrateur (et qu'il est donc autorisé à lancer ensuite un runas).



Il est bien évident que seul un administrateur peut en plus agir (par un runas) en tant qu'administrateur ...
Encore heureux qu'il en soit ainsi, non ? (sinon ce type de sécurité n'aurait plus aucun sens).

Vérifie que fonctionne également sous VIN 8 (32 et 64)

et si oui ===>> un shell pour lancer la commande runas que tgu trouveras là :
http://www.infoprat.net/astuces/windows2k_xp/commandes/runas.php
dans la partie exemples (le tout premier exemple).
Le plus simple, donc ===>> un tout petit programme toto.ex (par ex) qui :
1) vérifie que administrateur ou exit avec message
2) un shell de ce runas
3) exécution du setup.exe
EDIT : tu peux également faire directement, depuis le 2), ce que tu trouveras ici et qui lancera ton setup.exe en tant qu'administrateur (ce qui t'affranchit alors de l'étape 3))
http://www.vbforums.com/showthread.php?534958-Shell-And-RUNAS-commands

Tu peux bien sûr mettre ce toto.exe dans un autorun.inf et mettre tant toto.exe que Setup.exe à la racine du support CD utilisé.




________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
Messages postés
101
Date d'inscription
lundi 4 mai 2015
Dernière intervention
11 janvier 2018
0
Merci
J'ai bien dit depuis en non pas par !

On peut très bien lancer une commande RunAs depuis un compte User classique avec authentification administrateur bien sûr.

Pas de Windows 8 pour tester, nous attendons Windows 10 pour migrer.
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
264 -
On peut très bien lancer une commande RunAs depuis un compte User classique avec authentification administrateur

heu ... ce qui revient à être un administrateur...
Commenter la réponse de NeriXs
Messages postés
101
Date d'inscription
lundi 4 mai 2015
Dernière intervention
11 janvier 2018
0
Merci
J'essaie de le faire du taff sans VB6 dans un simple bloc-notes.

Private Declare Function ShellExecute Lib "shell32" _
Alias "ShellExecuteA" ( _
ByVal hWnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As VbAppWinStyle) As Long


ShellExecute hWnd, "runas /user:" & txtdom.Text & "\" & txtuser.Text, "App.Path & "\Project1.exe", vbNormalFocus
Commenter la réponse de NeriXs
Messages postés
101
Date d'inscription
lundi 4 mai 2015
Dernière intervention
11 janvier 2018
0
Merci
Si je fait :

ShellExecute hWnd, "runas", App.Path & "\Project1.exe", "", "", vbNormalFocus


ça fonctionne, mais pas en passant mes textbox en paramètre.

une idée?
Commenter la réponse de NeriXs
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
264
0
Merci
une idée?

Montre ce que contiennent tes textboxes et ce que tu as exactement écrit.

En appelant ton attention sur le fait que ta seconde commande n'est pas la même que la première (différences importantes)

J'observe au passage que la chaîne :
"runas /user:" & txtdom.Text & "\" & txtuser.Text, "App.Path & "\Project1.exe"
contient un nombre impair de guillemets, ce qui est une erreur bien trop rudimentaire et basique pour que je pense que tu l'as écrite ainsi ! (je veux ne pas croire, penser une seule seconde, que tu atteints un stade de déploiement d'une appli et ne sais pas construire une chaîne par concaténation de chaînes fixes et de variables ! Ce serait vraiment trop ... je ne dis pas ...)

EDIT : il te faut comprendre (j'espère que tu le sais, à ce stade, tout de même ...) que Shell attend une commande, que cette commande est une chaîne de caractères, que cette chaîne de caractères est/doit être exactement celle que tu écrirais en ligne de commande de Windows ...
regarde ce qu'est ta chaîne :m
msgbox "runas /user:" & txtdom.Text & "\" & txtuser.Text, "App.Path & "\Project1.exe"

Quelle belle erreur tu obtiendrais, non ?

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
Messages postés
101
Date d'inscription
lundi 4 mai 2015
Dernière intervention
11 janvier 2018
0
Merci
Effectivement le guillemet devant App.Path n'a pas lieu d'être.
Les quatre autres correspondent à IpParaleters et IpDirectory qui semblent êtres optionnels.
Je ne jouerai plus avec le bloc-notes c'est promis :).

Voila ce que j'ai exactement :

ShellExecute hWnd, "runas /user:" & txtdom.Text & "\" & txtuser.Text, App.Path & "\Project1.exe", "", "", vbNormalFocus


Dans
txtdom.Text
je renseigne le nom de la machine pour le compte admin local

Dans
txtuser.Text
administrateur

En invite de commande ce serrait :


runas /noprofile /user:MonOrdinateur\administrateur cmd


MsgBox "runas /user:" & txtdom.Text & "\" & txtuser.Text, App.Path & "\Project1.exe"


Me dit type incompatible.

J'avoue que je suis un peu perdu la !
Commenter la réponse de NeriXs
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
264
0
Merci
excuse-moi, mais je vais personnellement abandonner ici-même celui qui est capable d'écrire sans sourciller quelque-chose comme :
MsgBox "toto", "tata"
(qui donnerait bien évidemment le même message d'erreur).
Bonne chance (désolé, mais ce sera sans moi pour des raisons que je préfère ne pas indiquer ici ).
Commenter la réponse de ucfoutu
Messages postés
101
Date d'inscription
lundi 4 mai 2015
Dernière intervention
11 janvier 2018
0
Merci
Désolé je n'avais même pas relu le contenu du MsgBox.

MsgBox "runas /user:" & txtdom.Text & "\" & txtuser.Text & " " & App.Path & "\Project1.exe"
Commenter la réponse de NeriXs
Messages postés
101
Date d'inscription
lundi 4 mai 2015
Dernière intervention
11 janvier 2018
0
Merci
ShellExecute ne semble pas approprié pour ce que je souhaite faire "identifiant d'authentification Imposée".Au final "toujours dans mon cas" quel intérêt de refaire quelque chose que Windows gère déjà.

Je me suis contenté d'inviter l'utilisateur à lancer le programme en mode administrateur tel que suggéré par ucfoutu en début de poste:

Private Declare Function IsNTAdmin Lib "advpack.dll" (ByVal dwReserved As Integer, ByRef lpdwReserved As Integer) As Integer



If Not IsNTAdmin(0&, 0&) <> 0 Then ' droits Admins requis
MsgBox "Pour continuer, veuillez lancer le programme en Mode Administrateur."
Unload Me
Exit Sub
End If
Commenter la réponse de NeriXs

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.