Sto provando a creare un programma di installazione 32/64bit tutto in uno. L'unica cosa che è diversa su una macchina a 32 bit rispetto a una macchina a 64 bit è una chiamata a RegAsm.exe. Per una macchina a 64 bit il codice deve guardare il framework a 64 bit e per un 32 bit guarda al framework standard.Errori Inno Setup RegAsm.exe
32bit: "c: \ windows \ microsoft.net \ quadro" 64bit: "C: \ windows \ microsoft.net \ Framework64";
Ho il mio pacchetto di installazione per eseguire le azioni di installazione. Per la mia azione a 64 bit ho l'abilitazione per IsWin64.
Nome file: {dotnet4064} \ Regasm.exe; Parametri: "" "mydll.dll" "/ codebase"; WorkingDir: {app}; StatusMsg: "Registrazione componente aggiuntivo"; Flags: RunHidden; Verifica: IsWin64;
Diverse linee del file di log prima che l'errore
2012-12-05 14:58:53.233 Installing the file.
2012-12-05 14:58:53.281 Successfully installed the file.
2012-12-05 14:58:53.281 -- Icon entry --
2012-12-05 14:58:53.281 Filename: C:\Documents and Settings\All Users\Start Menu\Programs\myprogram\my program\Uninstall myprogram.lnk
2012-12-05 14:58:53.281 Creating directory: C:\Documents and Settings\All Users\Start Menu\Programs\myprogram\my program
2012-12-05 14:58:53.483 -- Icon entry --
2012-12-05 14:58:53.483 Filename: C:\Documents and Settings\All Users\Start Menu\Programs\myprogram\my program\myprogram.lnk
2012-12-05 14:58:54.224 -- Icon entry --
2012-12-05 14:58:54.224 Filename: C:\Documents and Settings\All Users\Desktop\myprogram.lnk
2012-12-05 14:58:54.281 Fatal exception during installation process (Exception):
Internal error: Cannot run files in 64-bit locations on this version of Windows.
2012-12-05 14:58:54.281 Exception message:
2012-12-05 14:58:54.281 Message box (OK):
Internal error: Cannot run files in 64-bit locations on this version of Windows.
2012-12-05 14:58:54.926 User chose OK.
2012-12-05 14:58:54.926 Message box (OK):
Setup was not completed.
Please correct the problem and run Setup again.
2012-12-05 14:59:00.222 User chose OK.
2012-12-05 14:59:00.222 Rolling back changes.
Tutto questo funziona bene su una macchina a 64 bit. In una macchina a 32 bit ottengo un errore:
Errore interno: Impossibile eseguire i file in posizioni a 64 bit su questa versione di Windows
Sono stato tutta la documentazione di aiuto e Google e non può bloccare una ragione per cui questo sta accadendo. Qualsiasi aiuto è apprezzato.
[Run]
Filename: "{dotnet40}\Regasm.exe"; Parameters: "My.TaskPane.dll"; WorkingDir: "{app}"; Flags: runhidden; StatusMsg: "Registering MyTaskPane Add-In"
Filename: "{dotnet4064}\Regasm.exe"; Parameters: "My.TaskPane.dll"; WorkingDir: "{app}"; Flags: runhidden; StatusMsg: "Registering My TaskPane Add-In"; Check: IsWin64
Filename: "{dotnet40}\Regasm.exe"; Parameters: "My.TaskPane.dll /codebase"; WorkingDir: "{app}"; Flags: runhidden; StatusMsg: "Registering My TaskPane Add-In"
Filename: "{dotnet4064}\Regasm.exe"; Parameters: "My.TaskPane.dll /codebase"; WorkingDir: "{app}"; Flags: runhidden; StatusMsg: "Registering My TaskPane Add-In"; Check: IsWin64
Filename: "{app}\My Software Suite.exe"; Parameters: "/register"; WorkingDir: "{app}"; Flags: PostInstall; Description: "Register the My Software Suite"
ho risolto questo con l'aggiunta: ArchitecturesInstallIn64BitMode = x64 e quindi utilizzando Check: Is64BitInstallMode
Prendere un registro di installazione e mostrare le linee pertinenti prima si verifica l'errore. – jachguate
Questa è la risposta dal registro. Non dice nulla in realtà oltre l'errore menzionato nella finestra di dialogo. 2012-12-05 14: 58: 54.281 Eccezione irreversibile durante il processo di installazione (eccezione): Errore interno: impossibile eseguire file in posizioni a 64 bit su questa versione di Windows. 2012-12-05 14: 58: 54.281 Messaggio di eccezione: 2012-12-05 14: 58: 54.281 Casella di messaggio (OK): Errore interno: impossibile eseguire file in posizioni a 64 bit su questa versione di Windows. 2012-12-05 14: 58: 54.926 L'utente ha scelto OK. – user1879966
Il valore basso mostra che il programma di installazione sta eseguendo RegAsm.exe che non dovrebbe eseguire? – jachguate