Si potrebbe aggirare il problema. Imballare i 2 programmi di installazione nel terzo progetto di distribuzione. Creare un'azione personalizzata che controlli la versione del sistema operativo in esecuzione, quindi fare in modo che il programma di installazione chiami il programma di installazione corretto.
Qualcosa di simile a questo:
[RunInstaller(true)]
public partial class MyInstaller: Installer
{
String installerPath;
public MyInstaller()
{
InitializeComponent();
if (Is64Bit())//running as 64-bit
{
installerPath= @"installfolder\my64bitsetup.exe";
}
else
{
installerPath= @"installfolder\my32bitsetup.exe";
}
}
[SecurityPermission(SecurityAction.Demand)]
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
}
[SecurityPermission(SecurityAction.Demand)]
public override void Commit(IDictionary savedState)
{
base.Commit(savedState);
MyInstall();
}
[SecurityPermission(SecurityAction.Demand)]
public override void Rollback(IDictionary savedState)
{
base.Rollback(savedState);
}
[SecurityPermission(SecurityAction.Demand)]
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
base.Commit(savedState);
}
private void MyInstall()
{
ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd.exe", "/c " + installerPath);
RunProcess(procStartInfo);
}
private void RunProcess(ProcessStartInfo procStartInfo)
{
Process proc = new Process();
proc.StartInfo = procStartInfo;
proc.Start();
proc.WaitForExit();
}
[DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool IsWow64Process([In] IntPtr hProcess, [Out] out bool lpSystemInfo);
private bool Is64Bit()
{
return (IntPtr.Size == 8 || (IntPtr.Size == 4 && Is32BitProcessOn64BitProcessor()));
}
private bool Is32BitProcessOn64BitProcessor()
{
bool retVal;
IsWow64Process(Process.GetCurrentProcess().Handle, out retVal);
return retVal;
}
Ok, che è stato a lungo ...
In ogni caso, nel Commit si può essere sicuri che gli installatori siano già scompattato, basta assicurarsi di avere il diritto sentiero. (È possibile modificare il comando cmd da/c a/k per i test, che manterrà attiva la finestra del prompt dei comandi per visualizzare i messaggi)
È possibile leggere ulteriori informazioni sulle azioni personalizzate, il percorso di installazione può essere superato da argomenti.
fonte
2010-12-23 12:58:07
Correlati: [Come installo condizionatamente un file con WiX basato sul computer di destinazione (32 bit o 64 bit)?] (Http://stackoverflow.com/questions/730534/) –