Comment faire un dialogue personnalisé dans InstallShield?

J'essaie de comprendre InstallShield (2009)/InstallScript à la volée, parce que je suis la modification de quelqu'un d'autre script d'installation.

L'une des boîtes de dialogue lors de la procédure d'installation, auparavant, avait une zone de texte sur elle, lui demandant une instance de SQL Server, en supposant un certain nom de base de données. Maintenant, je viens de terminer un accessoire vous permettant de choisir n'importe quel nom de base de données, et pas seulement la valeur par défaut, et j'ai besoin d'ajouter un champ à cette boîte de dialogue permet à l'utilisateur d'entrer le choisi DB nom. Monkey see, Monkey do, il suffit de faire un nouveau contrôle et de les dupliquer et de les adapter quelle que soit la fonctionnalité de la forme a eu pour la première zone de texte - assez facile, non?

Euh... problème ici. Il semble que le "SdShowDlgEdit1" forme générique est une chose qui est expédié avec InstallShield, et est utilisé partout, partout où vous avez une boîte de dialogue qui a besoin d'une zone de texte. Changement de forme, et il change de partout qu'on l'appelle... alors maintenant, j'ai une fausse 2ème zone de texte apparaissant partout mon installation partout où il y a une seule zone de texte avant.

Oups. Annuler les modifications, et de modifier la référence à "SdShowDlgEdit2", qui est - vous l'aurez deviné - InstallShield du formulaire standard pour les dialogues besoin de 2 zones de texte. Maintenant, ce serait génial.... sauf que le développeur précédent suis là, devant moi et a ajouté un bouton "parcourir" pour que dans un endroit où il avait besoin de la 2e zone de texte pour contenir un chemin d'accès au dossier. Je ne veux pas que le bouton "parcourir", et je ne peux pas le supprimer.

Donc, je pense, pourquoi n'ai-je pas créer un formulaire personnalisé de mon propre, et de ne pas obtenir en vertu de quelqu'un d'autre orteils? J'ai donc cloner le formulaire, renommez la nouvelle instance de "EnterDbDetails", supprimer le bouton "Parcourir" et de rendre le formulaire de regarder juste à droite.

Puis je retourne dans la InstallScript pour rediriger vers "EnterDbDetails" et de découvrir que la EzDefineDialog fonction m'oblige à passer dans le "Resource ID" de la forme. Maintenant ce qui était nouveau... 12018... grande... remplissez tous les détails nécessaires, compiler, construire, et de lui donner un tourbillon. Semble beau, toutes les bonnes valeurs par défaut sont remplis dans les deux zones de texte - mais hey! Pourquoi le bouton parcourir? Et pourquoi le texte sur les étiquettes pas ce que j'ai mis?

Retour à InstallScript, vérifiez l'ID de la Ressource s'avère que l'original "SdShowDlgEdit2" a aussi un ID de Ressource de 12018. Eh bien, qui explique que bien. Idiot que InstallShield vous permet d'avoir deux formes avec le même ID, mais peu importe... Donc, revenons à mon "EnterDbDetails" forme et de modifier l'ID...

Comment faire un dialogue personnalisé dans InstallShield?

... mais l'Identificateur de Ressource de propriété est en lecture seule! WTF?

Alors maintenant, je ne peux pas utiliser les formulaires standard, et je ne peux pas utiliser un formulaire personnalisé, car il ne me permet pas de changer l'ID de la ressource.

Je suis perplexe. Quelqu'un peut-il expliquer comment vous êtes censé faire quelque chose de ce genre, qui devrait être la chose la plus simple du monde?

OriginalL'auteur Shaul Behr | 2012-03-01