Насколько я понимаю произвольный доступ находится в постоянное время и для dicts и для списков Python, различие - то, что можно только сделать произвольный доступ целочисленных индексов со списками. Я предполагаю, что Вам нужен к поиску узел его маркировкой, таким образом, Вы хотите dict dicts.
Однако на передней стороне производительности, загружаясь это в память не может быть проблема, но если Вы будете использовать слишком много, то Вы закончите тем, что подкачали к диску, который уничтожит производительность даже высокоэффективного dicts Python. Попытайтесь подавить использование памяти как можно больше. Кроме того, RAM является удивительно дешевой прямо сейчас; если Вы делаете такого рода вещь много, нет никакой причины не иметь по крайней мере 4 ГБ.
, Если Вы хотели бы совет относительно подавления использования памяти, дайте еще некоторую информацию о виде информации, которую Вы отслеживаете для каждого узла.
Как заявил slugster, вам необходимо обновить ProductCode в таблице свойств. Вам также потребуется изменить код пакета в Сводная информация о потоке . Самый простой способ изменить ваш MSI - использовать автоматизацию с помощью VBScript .
Windows Installer SDK содержит полезные скрипты ( WiRunSQL.vbs , WiSumInf.vbs ), что позволит изменить ваш MSI следующим образом:
Чтобы изменить код продукта
cscript WiRunSQL.vbs your.msi "UPDATE Property SET Value='{AAAAAAAA-BBB1-CCCC-DDDD-EEEEEEEEEEEE}' WHERE Property='ProductCode'"
Чтобы изменить код пакета:
cscript WiSumInf.vbs your.msi 9={AAAAAAAA-BBB2-CCCC-DDDD-EEEEEEEEEEEE}
Просто обратите внимание, что новые коды должны быть действительным уникальным GUID .
Вам необходимо создать преобразование (.mst), которое применяется к файлу MSI перед его запуском. Это преобразование может делать разные вещи, включая изменение кода продукта. Именно это изменение кода продукта позволяет установить более одного экземпляра одного и того же продукта, потому что для установщика Windows это выглядит как другой продукт.
Эта функция преобразования встроена в механизм установщика Windows. Другими словами, вы можете сами создавать эти файлы, такие продукты, как InstallShield , просто упрощают эту задачу. Другие продукты для создания MSI, вероятно, будут иметь такую же функциональность, так что вы можете делать покупки вокруг, и, вероятно, будет инструмент в SDK установщика Windows для этого (я на самом деле не смотрел, я просто использую InstallShield).
Вы можно использовать Руководство по установке Windows,
См. Документацию Microsoft по Установка нескольких экземпляров продуктов и исправлений .
По памяти в прошлом месяце было обсуждение в списке WiX с кем-то, кто пытается сделать это при использовании WiX для установки нескольких веб-сайтов на одном сервере. Если вы можете найти соответствующие темы, ответов должно быть больше, чем у меня:)