Programme d'installation MSI autorisations de fichier/dossier
Je suis en train d'installer un ensemble de fichiers dans le dossier programdata l'aide de la base d'installation MSI. Comme le contenu des fichiers et dynamiques générées pendant le processus d'installation, je suis de créer les fichiers dans le code C# lors de l'installation.
Les fichiers sont créés dans les dossiers appropriés, et tout est bon, sauf la les permissions sur les fichiers. Si je comprends bien, les fichiers sont censés hériter de leurs autorisations du dossier parent (si activé), mais dans ce cas, cela n'arrive pas. Les fichiers que j'ai créer doit être accessible en écriture pour les utilisateurs réguliers, et je ne wan pas de définir des autorisations explicitement pour chaque fichier créé. Pourrait être le problème que le programme d'installation s'exécute avec des autorisations différentes, et donc les fichiers ne pas hériter des autorisations à partir de leurs dossiers parents?
Merci d'avance pour toute aide.
Oui. Le problème est qu'un dossier créé lors de l'installation obtient les autorisations par défaut pour l'administrateur (ou quelque chose comme ça). J'définir les autorisations de dossier manuellement, permettant à des utilisateurs réguliers d'écrire. Mais les fichiers créés dans le dossier n'héritent des autorisations réglée manuellement sur le dossier (bien entendu, le fichier est créé dans le programme d'installation, qui probablement s'exécute en tant qu'administrateur). Peut-être que la solution est de régler les autorisations sur les fichiers manuellement, cependant, je ne trouve pas ça une bonne approche.
OriginalL'auteur Kenneth | 2009-10-26
Vous devez vous connecter pour publier un commentaire.
le programme d'installation s'exécute avec un accès administrateur, ce qui lui permettrait de changer quelque chose dans les fichiers du programme. Un utilisateur normal aurait accès en lecture seule au dossier program files et le ProgramData/Commune dossier de Données d'Application.
MSI verrou de table autorisation permet à un programme d'installation pour modifier un dossier d'autorisation après la création dans ProgramData/Commun des Données d'Application. Visual Studio les projets d'installation ne prend pas en charge MSI de verrouillage de la table autorisation, donc si vous avez besoin du dossier que vous avez créé pour être accessible en écriture pour l'utilisateur normal dans un projet d'installation, vous devez accorder le droit à une action personnalisée à l'aide de SetNamedSecurityInfo ou de modifier la base de données MSI après l'étape de génération. Vous pouvez également trouver un MSI le logiciel de création qui peut faire face à MSI de verrouillage de la table autorisation.
Commune ProgramData est en lecture seule pour les utilisateurs normaux, d'accorder R/W à tous les utilisateurs le programme d'installation doit changer de l'autorisation après la création d'un sous-dossier.
OriginalL'auteur Sheng Jiang 蒋晟
J'avait le même problème et j'ai été en mesure de le résoudre à l'aide de l'exemple ici.
OriginalL'auteur Emir
Si vous définissez les autorisations de dossier manuellement avec une Action Personnalisée et de générer et installer les fichiers avec une autre Coutume, Action, alors le problème pourrait être causé par l'ordre de l'exécution.
OriginalL'auteur Ishmael
J'ai eu un problème similaire ici. Le problème ici est que msi a été de créer les fichiers avec SYSTÈME de l'utilisateur. Et l'application en cours d'exécution a l'aide de l'utilisateur (qui n'ont pas l'autorisation d'écriture à ce fichier).
Ce que j'ai fait est de créer un nouveau fichier (si elle n'existe pas) lors de l'initialisation de l'application avec celui créé par le programme d'installation. Ensuite, ce fichier aura l'autorisation d'écriture. Ce n'est pas une bonne pratique, mais résolu mon problème.
OriginalL'auteur Thiago