Impossible d'installer MSI avec des actions personnalisées à la non-administration avec des caractères non ASCII dans le nom d'utilisateur

StackOverflow https://stackoverflow.com/questions/4999011

Question

C'est un problème avec lequel je me bat depuis quelques jours et je suis maintenant à la fin de mon esprit. Je crée un MSI avec Wise Installation Studio, mais je parie que cela pourrait être reproduit avec n'importe quel programme de création de MSI. J'ai créé un échantillon de test pour ceux qui souhaitent repro avec les fichiers MSI, DLL ou WSI que j'ai publiés.

  1. Créez une nouvelle solution sage, enregistrée comme «test.wsi» et crée «test.msi»
  2. Ne faites rien à ce fichier sauf pour ajouter deux actions personnalisées après l'action MigrateFeAreStState dans la «séquence d'interface utilisateur»
  3. La première action personnalisée est une «DLL d'appel à partir de l'installation» qui passe dans aucun paramètre et ignore le code de retour
  4. La deuxième action personnalisée est une «DLL personnalisée d'appel à partir de l'installation» qui passe dans aucun paramètre et ignore le code de retour
  5. Les deux actions font référence à la même DLL et à la même fonction, helloworld.dll et helloworld () qui affiche simplement une boîte de message «Helloworld»

Résultat attendu: deux invites Hello World, puis l'écran d'interface utilisateur ordinaire pour démarrer le processus d'installation.

Voici ma configuration actuelle: Boîte de développement: - Wise Installation Studio 7.4.0.214 - Win7 X64 Running with UAC éteint,

Boîte de test: - Windows XP SP3 - Windows Installer v4.5.6001.22159 - .NET Framework v4.0

Voici mes cas de test:

  1. Non-admin avec le nom d'utilisateur ASCII - Les résultats sont comme prévu pour les deux 'allusers = ""' et allusers = "1"
  2. Admin avec des caractères Unicode dans le nom 'あく ぇえ' - Les résultats sont comme prévu pour les deux 'allusers = ""' et allusers = "1"
  3. Non-admin avec les caractères Unicode dans le nom '发涩' - seule l'invite première apparaît et une erreur s'affiche pour la seconde comme suit: "Erreur dans l'action personnalisée. La bibliothèque C: Documents and Settings ?? [LongPhanumericString]. TMP wiseCustomCalla.dll n'est pas valide ou n'a pas pu être trouvé. " Cela se produit pour les deux 'allusers = ""' et allusers = "1"
  4. Connectez-vous avec un autre administrateur et définissez l'utilisateur dans le n ° 3 sur l'administrateur, connectez-vous à l'utilisateur dans le n ° 3 et nous obtenons les résultats attendus.

J'ai essayé de jouer avec le forçage de chemins courts et le passage d'un chemin alternatif vers le dossier de données des utilisateurs mais rien ne fonctionne. Quelqu'un sait pourquoi cela se passe et comment le réparer? J'ai inclus tous les fichiers que j'ai utilisés pour ce test ici, cela inclut une capture d'écran du message d'erreur, le MSI et MSI.xml, le fichier WSI, The Helloworld.dll (tester avec Rundll32 Helloworld.dll, Hellowworld) et Journaux pour chaque cas de test ci-dessus.

http://dl.dropbox.com/u/1797288/error.zip

Qu'est-ce qui doit être modifié dans le fichier MSI / WSI afin que le # 3 fonctionne correctement pour l'action «Appelez la DLL personnalisée à partir de l'installation»?

Merci, Aaron P

Était-ce utile?

La solution

Je pense que le problème est causé par la façon dont ces DLL sont traitées. Une DLL de l'installation est stockée dans une table binaire et extraite automatiquement pendant l'installation. Il est natif, donc cela fonctionne comme prévu.

Appelez la DLL personnalisée à partir de l'installation utilise très probablement un chemin incorrect pour extraire la DLL pendant l'installation. Il peut s'agir d'un emplacement par machine qui ne peut pas être accessible par un utilisateur non traditionnel.

Essayez de construire le MSI avec une page de code qui prend en charge les caractères Unicode (vous pouvez définir la langue MSI). Essayez également de créer un journal et de publier le chemin DLL réel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top