VersionNT MSI bien sur Windows 10
Je suis la recherche que lorsque je mets à jour le manifeste pour mon programme d'amorçage pour soutenir l'Windows 10 sur la compatibilité, la InstallUISequence du MSI définir correctement VersionNT=1000, mais la InstallExecuteSequence sera mis VersionNT=603.
Comment puis-je faire la InstallExecuteSequence également définir VersionNT=1000?
OriginalL'auteur jbudreau | 2015-08-11
Vous devez vous connecter pour publier un commentaire.
Voici mes deux cents....
Je ne trouve pas la VersionNT propriété très utile. VersionNT64 est: VersionNT64 .... Pas VersionNT64 pour déterminer le nombre de bits.
C'est un peu un hack (ils le font, nous ne faisons que...), mais les temps désespérés appellent des mesures désespérées....
Dans l'ensemble de la compatibilité des jeux MSFT est en cours de lecture seulement, ils semblent être de masquage de la Majeure et la Mineure, mais de Construire et de révision. J'ai aussi travaillé que sur Win8 elles masque comme 6.2 et sur Win 10, ils masque comme 6.3. Donc je me sens à l'aise de faire ceci:
Ce que j'ai tendance à ne me pose est "POURQUOI" ai-je besoin de Windows (FOO)? J'ai ensuite chercher une entrée de registre ou des fichiers DLL qui indique que la caractéristique particulière, le composant, l'API est présent et l'utiliser pour mon test.
Microsoft a adopté un arbre à feuilles persistantes approche de "vous n'avez pas besoin de savoir quelle version c'est, vous aurez toujours la dernière, et il va toujours être appelé Windows 10" et pour moi, cela renforce l'approche que je préfère prendre. Je sais qu'un jour viendra qu'ils ont tort et que j'ai besoin de savoir sinon je vais installer et mon application échoue, et mes utilisateurs se plaignent et ne pas savoir quelle version ils ont. (Soupir...)
Il semble que seulement le faire dans l'installation serait de vous laisser avec des données inexactes lorsque ceux qui ont installé votre programme sur Windows 7 ou supérieur à niveau de Windows sans une nouvelle installation. Si vous déplacez qu'à l'application, vous résoudre les deux problèmes simultanément.
D'accord. J'ai juste fait plusieurs en place Win 8.1 / 10 mises à niveau et ils sont étonnamment bien.
Je ne suis pas satisfait de cette réponse et il ne devrait pas être digne de confiance. Kernel32 n'existe pas dans SYSWOW64 pour une installation 32 bits et l'autre dll, telles que advapi32.dll sont avoir leurs numéros de version masquée interférant avec AppSearch. Il ya plus à ce que je ne semble pas encore savoir.
Je suis toujours heureux avec le morceau d'opinion au bas de la réponse.
OriginalL'auteur Christopher Painter
Depuis
msiexec.exe
n'a pas de Windows 10 compatibilité dans son manifeste, etVersionNT
est un la propriété privée, il n'y a pas de moyen propre, je suis conscient de faire exécuter la séquence de voirVersionNT=1000
. Je recommande l'une de ces approches:VersionNT
à l'autre de la propriété au cours de la séquence INTERFACE (certains la propriété publique commeREALVERSIONNT
; assurez-vous de liste dansSecureCustomProperties
comme toute autre propriété que vous souhaitez passer à l'exécution de la séquence),(Je suis déchiré sur la clé de registre option, car il peut aller rassis si le système d'exploitation est mis à jour dans le futur. Note que bien que toutes ces options sont susceptibles d'être seulement comme correctes, comme le manifeste sur votre bootstrap théorique future version de Windows.)
Puisque vous avez besoin de l'appui de tous ces modes d'utilisation, euh, bonne chance à vous! Je pense que la réponse est actuellement que c'est impossible. Il y a peut être d'autres objets à chercher, mais Microsoft a clairement décidé qu'ils ne veulent pas que les gens la détection de Windows 10 dans les packages Windows Installer. (Je souhaite juste qu'ils avaient mise à jour de la documentation sur VersionNT en conséquence.)
Mes deux cents fournies ci-dessous.
Ils devraient mettre à jour AppSearch aussi. J'ai fait une recherche pour un advapi32.dll avec minversion 10.0.0.0 et il n'est pas détecté. Déposer les minvision à 6.0.0.0 et il est détecté. Explorer dit que c'est la version est 10.0.10240.16384.
Le WindowsBuild et MsiWin32AssemblySupport propriétés sont des mensonges aussi!
OriginalL'auteur Michael Urman
Officiel de Microsoft réponse:
Source
OriginalL'auteur tiberriver256
Pour les installateurs qui n'ont pas de programme d'amorçage, j'ai trouvé que la création immédiate d'une action personnalisée qui appelle GetVersionEx() et définit une propriété pour le reste de l'installer pour l'utiliser est également une bonne alternative.
J'ai séquencé mon action personnalisée à se produire après AppSearch, et il suffisait de l'état des composants.
vous avez raison. Si votre action personnalisée est écrit en C++, puis par tous les moyens d'utiliser la Version Api d'assistance. Cependant, ils ne sont pas disponibles par P/Invoke .NET des actions personnalisées. De toute façon, quelle que soit la coutume de l'action mise en œuvre peut-être, le point est que les actions personnalisées ne sont pas exécuter en mode de compatibilité, et donc peut aider à déterminer le système d'exploitation de version.
Comment cela pourrait-il l'action personnalisée réussir? L'action personnalisée s'exécute dans le contexte du processus appelant, qui est msiexec.exe qui n'a pas un manifeste pour Win10, et donc la GetVersion(Ex) API renvoie la même 6.3 résultat.
les actions personnalisées sont exécutées par rundll32.exe. A-t-elle le manifeste?
Non, les actions personnalisées sont exécutées par msiexec.exe et ils ont donc accès à l'installateur contexte, y compris le programme d'installation de propriétés (disponible pour ce type d'action - par exemple, différé) etc.
OriginalL'auteur shpuktzy
J'ai trouvé qu'un très facile et robuste moyen de détection de Windows 10 est par l'appel de la intégré dans la commande WMIC et de l'analyse du résultat de:
wmic os get Name,Version,BuildNumber /VALUE
il va revenir exactement les informations dont vous avez besoin pour déterminer quel système d'exploitation vous êtes sur:
http://helpnet.flexerasoftware.com/installshield22helplib/helplibrary/whats_newIS2015.htm
OriginalL'auteur technoHermit