2013-04-15 2 views
1

Я работаю над созданием нескольких экземпляров для своей установки, и это код, который у меня есть до сих пор. ПРИМЕЧАНИЕ. Очевидные данные были удалены. , Я получаю пользовательский интерфейс, и я добираюсь до этапа установки, и когда он попадает в диалоговое окно «Прогресс», я получаю сообщение об ошибке.Ошибка установки Wi-Pack для нескольких экземпляров (код ошибки 2755. Аргументы: 1639)

Я знаю, что это не моя версия msiexec или служба, поскольку я проверил все. Может ли кто-нибудь сообщить мне, что именно вызывает эту проблему?

<!--Multi-instance--> 
<InstanceTransforms Property="INSTANCEID"> 
    <Instance Id="Inst1" Inst1PProductductCode="**GUID**" Inst1PProductductName="Inst1PProductductInst1"/> 
    <Instance Id="Inst1Stage" Inst1PProductductCode="**GUID**" Inst1PProductductName="Inst1PProductductInst1Stage"/> 
    <Instance Id="Inst3" Inst1PProductductCode="**GUID**" Inst1PProductductName="Inst1PProductductInst3"/> 
    <Instance Id="Inst4" Inst1PProductductCode="**GUID**" Inst1PProductductName="Inst1PProductductInst4"/> 
    <Instance Id="Other" Inst1PProductductCode="**GUID**" Inst1PProductductName="Inst1PProductductOther"/> 
    <Instance Id="Other2" Inst1PProductductCode="**GUID**" Inst1PProductductName="Inst1PProductductOther2"/> 
    <Instance Id="Other3" Inst1PProductductCode="**GUID**" Inst1PProductductName="Inst1PProductductOther3"/> 
</InstanceTransforms> 

<!--Registering Multiple Instances--> 
<Property Id="Inst1INSTALLEDInst1PProductductCODE"> 
    <RegistrySearch Id="Inst1Inst1PProductductCodeLookUp" Key="$(var.RegKeyDir)\Inst1" Name="**GUID**" Productot="HKLM" Type="raw"/> 
</Property> 
<Property Id="Inst1STAGEINSTALLEDInst1PProductductCODE"> 
    <RegistrySearch Id="Inst1StageInst1PProductductCodeLookUp" Key="$(var.RegKeyDir)\Inst1Stage" Name="**GUID**" Productot="HKLM" Type="raw"/> 
</Property> 
<Property Id="Inst3INSTALLEDInst1PProductductCODE"> 
    <RegistrySearch Id="Inst3Inst1PProductductCodeLookUp" Key="$(var.RegKeyDir)\Inst3" Name="**GUID**" Productot="HKLM" Type="raw"/> 
</Property> 
<Property Id="Inst4INSTALLEDInst1PProductductCODE"> 
    <RegistrySearch Id="Inst4Inst1PProductductCodeLookUp" Key="$(var.RegKeyDir)\Inst4" Name="**GUID**" Productot="HKLM" Type="raw"/> 
</Property> 
<Property Id="OTHERINSTALLEDInst1PProductductCODE"> 
    <RegistrySearch Id="OtherInst1PProductductCodeLookUp" Key="$(var.RegKeyDir)\Other" Name="**GUID**" Productot="HKLM" Type="raw"/> 
</Property> 
<Property Id="OTHER2INSTALLEDInst1PProductductCODE"> 
    <RegistrySearch Id="Other2Inst1PProductductCodeLookUp" Key="$(var.RegKeyDir)\Other2" Name="**GUID**" Productot="HKLM" Type="raw"/> 
</Property> 
<Property Id="OTHER3INSTALLEDInst1PProductductCODE"> 
    <RegistrySearch Id="Other3Inst1PProductductCodeLookUp" Key="$(var.RegKeyDir)\Other3" Name="**GUID**" Productot="HKLM" Type="raw"/> 
</Property> 

<!--Installation Files--> 
<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="PProductgramFilesFolder" Name="PProductgramFiles"> 
    <Directory Id="INSTALLDIR" Name="Inst1PProductduct"> 
     <Directory Id="Inst1PProductductWEB"> <!--Name="Inst1PProductduct(Inst1) Web"--> 
     <!--RegCompCode--> 

     <!--IISWebPoolCode--> 
     <Component Id="IISWebPool" Guid="$(var.IISWebPoolCode)" Win64="no" MultiInstance="yes" Permanent="yes"> 
      <iis:WebAppPool Id="Inst1PProductduct" Name="Inst1PProductductAppPool" ManagedRuntimeVersion="[NET_VER]" IdleTimeout="0" RecycleMinutes="0" ManagedPipelineMode="integrated"/> 
      <CreateFolder /> 
     </Component> 

     <!--IISWebRegCode--> 
     <Component Id="IISWebReg" Guid="$(var.IISWebRegCode)" KeyPath="yes" MultiInstance="yes"> 
      <iis:WebVirtualDir Id="ProductVirtualDir" Alias="[SHORTCUT]" Directory="Inst1PProductductWEB" WebSite="DefaultWebSite" > 
      <iis:WebApplication Id="ProductWebApp" Name="[SHORTCUT]" WebAppPool="Inst1PProductduct" /> 
      <iis:WebDirPProductperties Id="ProductWebDir" AnonymousAccess="yes" WindowsAuthentication="yes" /> 
      </iis:WebVirtualDir> 
      <CreateFolder /> 
     </Component> 

     <!--WebDataFilesCode--> 
     <Component Id="WebDataFiles" Guid="$(var.WebDataFilesCode)" MultiInstance="yes">    
      <File Id="clientaccesspolicy.xml" Source="$(var.Inst1PProductductWebFiles)\clientaccesspolicy.xml" Vital="yes" DiskId="1"/> 
      <File Id="Default.aspx" Source="$(var.Inst1PProductductWebFiles)\Default.aspx" Vital="yes" DiskId="1"/> 
      <File Id="Global.asax" Source="$(var.Inst1PProductductWebFiles)\Global.asax" Vital="yes" DiskId="1"/> 
      <File Id="Global.asax.cs" Source="$(var.Inst1PProductductWebFiles)\Global.asax.cs" Vital="yes" DiskId="1"/> 
      <File Id="Help.aspx" Source="$(var.Inst1PProductductWebFiles)\Help.aspx" Vital="yes" DiskId="1"/> 
      <File Id="Help.aspx.cs" Source="$(var.Inst1PProductductWebFiles)\Help.aspx.cs" Vital="yes" DiskId="1"/> 
      <File Id="Print.aspx" Source="$(var.Inst1PProductductWebFiles)\Print.aspx" Vital="yes" DiskId="1"/> 
      <File Id="Report.aspx" Source="$(var.Inst1PProductductWebFiles)\Report.aspx" Vital="yes" DiskId="1"/> 
      <File Id="Inst1PProductductHelp.aspx" Source="$(var.Inst1PProductductWebFiles)\Inst1PProductductHelp.aspx" Vital="yes" DiskId="1"/> 
      <File Id="Silverlight.js" Source="$(var.Inst1PProductductWebFiles)\Silverlight.js" Vital="yes" DiskId="1"/> 
      <File Id="WcfPortal.svc" Source="$(var.Inst1PProductductWebFiles)\WcfPortal.svc" Vital="yes" DiskId="1"/> 
      <File Id="WcfSecurePortal.svc" Source="$(var.Inst1PProductductWebFiles)\WcfSecurePortal.svc" Vital="yes" DiskId="1"/> 
      <File Id="Web.sample.config" Source="$(var.Inst1PProductductWebFiles)\Web.sample.config" Vital="yes" DiskId="1"/> 
      <File Id="WpfWcfPortal.svc" Source="$(var.Inst1PProductductWebFiles)\WpfWcfPortal.svc" Vital="yes" DiskId="1"/> 
      <File Id="Web.config" KeyPath="yes" Source="$(var.Inst1PProductductWebFiles)\Web.config" Vital="yes" /> 
      <util:XmlFile Id="SetConn" Action="setValue" ElementPath="/configuration/connectionStrings/add[\[]@name='Inst1PProductductConnectionString'[\]]/@connectionString" 
         Value="Data Source=[SERVERNAME];Initial Catalog=[DBNAME];Password=&quot;encrypted:kUrWr7n47L3akvAu89Evew==&quot;;User ID=Productster;" 
         File="[#Web.config]" SelectionLanguage="XPath" Sequence="1" /> 
     </Component> 

     <!--RegisterFolderCode--> 
     <!--<Component Id="RegisterFolder" Guid="$(var.RegisterFolderCode)"> 
      <RegistryValue Id="AppAlias" Name="AppAlias" Productot="HKLM" Key="SOFTWARE\Inst1PProductduct\Inst1PProductductWeb(Inst1)" Type='string' Value="[SHORTCUT]" KeyPath='yes'/> 
      <RegistryValue Id="VirtualDir" Name='VirtualDir' Productot='HKLM' Key='SOFTWARE\Inst1PProductduct\Inst1PProductductWeb(Inst1)' Type='string' Value='[SHORTCUT]'/> 
     </Component>--> 

     <!--Registering Individual Instances--> 
     <Component Id="Registry_Inst1" Guid="$(var.RegInst1Comp)"> 
      <Condition><![CDATA[INSTANCEID = "Inst1"]]></Condition> 
      <RegistryKey Productot="HKLM" Key="$(var.RegKeyDir)\[INSTANCEID]" > 
      <RegistryValue Id="Presence_Inst1" Action="write" Name="Inst1Inst1PProductductCode" Value="[Inst1PProductductCode]" Type="string" KeyPath="yes" /> 
      </RegistryKey> 
     </Component> 
     <Component Id="Registry_Inst1Stage" Guid="$(var.RegInst1StageComp)"> 
      <Condition><![CDATA[INSTANCEID = "Inst1Stage"]]></Condition> 
      <RegistryKey Productot="HKLM" Key="$(var.RegKeyDir)\[INSTANCEID]" > 
      <RegistryValue Id="Presence_Inst1Stage" Action="write" Name="Inst1StageInst1PProductductCode" Value="[Inst1PProductductCode]" Type="string" KeyPath="yes" /> 
      </RegistryKey> 
     </Component> 
     <Component Id="Registry_Inst3" Guid="$(var.RegInst3Comp)"> 
      <Condition><![CDATA[INSTANCEID = "Inst3"]]></Condition> 
      <RegistryKey Productot="HKLM" Key="$(var.RegKeyDir)\[INSTANCEID]" > 
       <RegistryValue Id="Presence_Inst3" Action="write" Name="Inst3Inst1PProductductCode" Value="[Inst1PProductductCode]" Type="string" KeyPath="yes" /> 
      </RegistryKey> 
     </Component> 
     </Directory> 
    </Directory> 
    </Directory> 
</Directory> 

<!--Create web applicaton under Default Website--> 
<iis:WebSite Id="DefaultWebSite" Description="[SHORTCUT]" Directory="Inst1PProductductWEB"> 
    <iis:WebAddress Id="AllUnassigned" Port="80" /> 
</iis:WebSite> 

<Feature Id="$(var.Feature)Install" 
     Title="$(var.InstallName) Installer" 
     Description="$(var.InstallName) Setup Wizard" 
     Display="expand" 
     Level="1" 
     ConfigurableDirectory="Inst1PProductductWEB"> 
    <Feature Id="$(var.Feature)" Title="$(var.InstallName)" Description="$(var.InstallName)" Level="1"> 
    <ComponentRef Id="IISWebPool" /> 
    <ComponentRef Id="IISWebReg" /> 
    <ComponentRef Id="WebDataFiles" /> 
    <ComponentRef Id="BinFiles" /> 
    <ComponentRef Id="ClientBinFiles" /> 
    <ComponentRef Id="Registry_Inst1" /> 
    <ComponentRef Id="Registry_Inst1Stage" /> 
    <ComponentRef Id="Registry_Inst3" /> 
    </Feature> 
</Feature> 

<!--UI--> 
<UI Id="Installer_UI"> 
    <UIRef Id="WixUI_Mondo"/> 
    <Property Id="WIXUI_INSTALLER" Value="TARGETDIR"/> 

    <DialogRef Id="InstallerUIDlg"/> 
    <DialogRef Id="InstallDlg"/> 
    <DialogRef Id="InstallPProductgressDlg"/> 

    <Publish Dialog="ExitDialog" ContProductl="Finish" Event="EndDialog" Value="Return" Order="999"></Publish> 
    <Publish Dialog="LicenseAgreementDlg" ContProductl="Next" Event="NewDialog" Value="InstallerUIDlg" Order="2">LicenseAccepted = "1"</Publish> 
    <Publish Dialog="SetupTypeDlg" ContProductl="Back" Event="NewDialog" Value="InstallerUIDlg" Order="2">1</Publish> 
    <Publish Dialog="PProductgressDlg" ContProductl="Next" Event="NewDialog" Value="InstallerUIDlg" Order="2">1</Publish> 

</UI> 
<UIRef Id="WixUI_Common"/> 

<!--Custom Actions--> 
<CustomAction Id="SetInst1PProductductName" Property="Inst1PProductductName" Value="[[Inst1PProductductNameProperty][INSTANCEID]]" /> 
<CustomAction Id="SetInstanceDirectory" Property="Inst1PProductductWEB" Value="[INSTALLDIR][INSTANCEID]\"/> 
<CustomAction Id="SetTransforms" Property="TRANSFORMS" Value="{:[INSTANCEID];}[TRANSFORMS]" /> 
<CustomAction Id="SetNewInstance" Property="MSINEWINSTANCE" Value="1" /> 

<CustomAction Id="SetInstance_Inst1" Property="INSTANCEID" Value="Inst1" /> 
<CustomAction Id="SetInstance_Inst1Stage" Property="INSTANCEID" Value="Inst1Stage" /> 
<CustomAction Id="SetInstance_Inst3" Property="INSTANCEID" Value="Inst3" /> 
<CustomAction Id="SetInstance_Inst4" Property="INSTANCEID" Value="Inst4" /> 
<CustomAction Id="SetInstance_Other" Property="INSTANCEID" Value="Other" /> 
<CustomAction Id="SetInstance_Other2" Property="INSTANCEID" Value="Other2" /> 
<CustomAction Id="SetInstance_Other3" Property="INSTANCEID" Value="Other3" /> 

<InstallExecuteSequence> 
    <Custom Action="SetInst1PProductductName" Before="ValidateInst1PProductductID" /> 
    <Custom Action="SetInstanceDirectory" Before="CostFinalize"><![CDATA[Inst1PProductductWEB = ""]]></Custom> 
    <RemoveExistingInst1PProductducts Before="InstallInitialize" /> 
</InstallExecuteSequence> 

<InstallUISequence> 
    <Custom Action="SetInstance_Inst1" Before="SetTransforms"><![CDATA[ACTION = "INSTALL" AND INSTANCEID = "Default" AND Inst1INSTALLEDInst1PProductductCODE = ""]]></Custom> 
    <Custom Action="SetInstance_Inst1Stage" After="SetInstance_Inst1"><![CDATA[ACTION = "INSTALL" AND INSTANCEID = "Default" AND Inst1STAGEINSTALLEDInst1PProductductCODE = ""]]></Custom> 
    <Custom Action="SetInstance_Inst3" After="SetInstance_Inst1Stage"><![CDATA[ACTION = "INSTALL" AND INSTANCEID = "Default" AND Inst3INSTALLEDInst1PProductductCODE = ""]]></Custom> 
    <Custom Action="SetInstance_Inst4" After="SetInstance_Inst3"><![CDATA[ACTION = "INSTALL" AND INSTANCEID = "Default" AND Inst4INSTALLEDInst1PProductductCODE = ""]]></Custom> 
    <Custom Action="SetInstance_Other" After="SetInstance_Inst4"><![CDATA[ACTION = "INSTALL" AND INSTANCEID = "Default" AND OTHERINSTALLEDInst1PProductductCODE = ""]]></Custom> 
    <Custom Action="SetInstance_Other2" After="SetInstance_Other"><![CDATA[ACTION = "INSTALL" AND INSTANCEID = "Default" AND OTHER2INSTALLEDInst1PProductductCODE = ""]]></Custom> 
    <Custom Action="SetInstance_Other3" After="SetInstance_Other2"><![CDATA[ACTION = "INSTALL" AND INSTANCEID = "Default" AND OTHER3INSTALLEDInst1PProductductCODE = ""]]></Custom> 

    <Custom Action="SetTransforms" Before="ExecuteAction"><![CDATA[ACTION = "INSTALL"]]></Custom> 
    <Custom Action="SetNewInstance" Before="ExecuteAction"><![CDATA[ACTION = "INSTALL"]]></Custom> 

</InstallUISequence> 

ответ

2

Я понимаю, что вы должны установить значения TRANSFORMS и MSINEWINSTANCE до пакета MSI запускается. MSI SDK показывает его в теме: Installing Multiple Instances with Instance Transforms. Это возможно вы можете установить MSINEWINSTANCE с помощью настраиваемого действия, как вы, но я уверен, что свойство TRANSFORMS должно быть установлено до того, как MSI-пакет будет открыт установщиком Windows, потому что преобразование применяется при открытии пакета MSI ,

В принципе, для правильной установки вам необходим какой-то загрузочный скрипт или документированный процесс командной строки. Из-за этих проблем возникают несколько пакетов экземпляров в установщике Windows.

+0

У меня сейчас странный вопрос. Я могу установить один экземпляр приложения, но не удается, когда я пытаюсь установить другой. Если я дважды нажимаю на msi после того, как я установил экземпляр, я получаю сообщение об ошибке 2755. И в подробном журнале говорится, что guid существует. Когда я пытаюсь удалить его с помощью msiexec x {GUID}, он работает нормально? Но затем, когда я запускаю его снова, я получаю ту же ошибку. И если я попытаюсь установить еще один экземпляр, скажите msiexec/i App.msi/MSINEWINSTANCE = 1 TRANSFORMS: = ProductStage. Я получаю сообщение об ошибке, сообщающее, что попытка преобразования нескольких указателей не удалась ... – user2260125

1

Сначала я попытался проверить/устранить неполадки из командной строки, чтобы устранить сложность пользовательского интерфейса.

Вы должны всегда передавать свое преобразование и всегда указывать MSINEWINSTANCE = 1 из командной строки при установке экземпляра.

msiexec /i App.msi TRANSFORMS=:Inst1 MSINEWINSTANCE=1 
msiexec /i App.msi TRANSFORMS=:Inst1Stage MSINEWINSTANCE=1 
msiexec /x App.msi TRANSFORMS=:Inst1 
msiexec /x App.msi TRANSFORMS=:Inst1Stage 

Я имею в виду, если вы можете проверить вещи прямо из командной строки, то вы можете подтвердить ваш вопрос специфичен для GUI и сертификации, связанные с установкой экземпляра.

+0

Согласно моему подробному журналу: Действие 10 : 07: 07: SetNewInstance. Начало действия 10:07:07: SetNewInstance. MSI (c) (84:58) [10: 07: 07: 401]: ИЗМЕНЕНИЕ НЕДВИЖИМОСТИ: добавление свойства MSINEWINSTANCE. Его значение равно «1». Действие завершено 10:07:07: SetNewInstance. Возвращаемое значение 1. MSI (c) (84:58) [10: 07: 07: 401]: Действие: SetInstance_01 Действие 10:07:07: SetInstance_01. Начало действия 10:07:07: SetInstance_01. MSI (c) (84:58) [10: 07: 07: 401]: ИЗМЕНЕНИЕ НЕДВИЖИМОСТИ: изменение свойства INSTANCEID. Его текущее значение - «Def». Его новое значение: «Product01». Действие завершено 10:07:07: SetInstance_01. Возвращаемое значение 1. – user2260125

+0

Таким образом, он применяет преобразование правильно, и это через интерфейс. НО я получаю эту ошибку во время фазы ExecuteAction: DEBUG: Ошибка 2755: сервер возвратил непредвиденную ошибку 1624, пытающуюся установить пакет ProductWebInstaller.msi. Установщик столкнулся с непредвиденной ошибкой при установке этого пакета. Это может указывать на проблему с этим пакетом. Код ошибки 2755. Аргументы: 1624, ProductWebInstaller.msi, MSI (c) (84:58) [10: 07: 10: 445]: Продукт: Product8.3 – user2260125

+0

У меня есть несколько мыслей.Ошибка 1624, кажется, связана с преобразованием, которая указывает на комментарий Роба в начале. Я предполагаю, что преобразование является внутренним. Я добавил «:» в вызов командной строки выше, чтобы указать этот факт. Мне все еще интересно, что такое поведение, когда вы удаляете пользовательский интерфейс и ваши ЦС из своего тестирования. Установщик, работающий правильно из командной строки с преобразованием, и MSINEWINSTANCE = 1, скорее всего, подтвердит, что сказал Роб, или означает, что ваша последовательность CA отключена. Удачи! –