2009-07-08 5 views
1

Kürzlich habe ich die WPF-Anwendung gemacht und möchte sie für viele Benutzer veröffentlichen, aber die Anwendung scheint Probleme auf einigen Zielbenutzermaschinen zu haben. Es stürzt einfach ab, wenn der Benutzer es startet. Ich erstelle eine App mit .NET Framework v.3.0 als Zielversion und der Benutzercomputer hat .NET Framework installiert. Ich möchte nur einen Weg, um sicherzustellen, (zum Beispiel mit der Installation des Systems) meine Anwendung wird ohne Fehler ausgeführt werden.Wie kann man sicherstellen, dass die WPF-Anwendung auf dem Benutzercomputer einwandfrei läuft?

Was ist wirklich seltsam, auf meinen Test-PCs (ohne Visual Studio installiert, sondern nur mit 3.0 .NET Framework) läuft es perfekt.

Anwendung haben keine zusätzlichen Referenzen außer .NET.

sind hier ein Link diese Anwendung herunterladen, damit, wenn Sie Sie wollen es testen können: http://nippon.is74.ru/ForismaticTray.7z

Antwort

2

Verwenden ein Installationsprogramm wie NSIS und für Ihren Rahmen überprüfen. Wenn es nicht auf dem Zielrechner installieren it.Here ist, was ich in NSIS tun

Function IsDotNetInstalledAdv 
    !insertmacro MUI_HEADER_TEXT "Checking for prerequisites." "Checking for .net framework 3.5 SP1.." 

    ReadRegDWORD $0 HKLM "software\Microsoft\NET Framework Setup\NDP\v3.5" "SP" 
    StrCmp $0 1 skip.DotNet 
    !insertmacro MUI_HEADER_TEXT "Installing .net framework." "Installing .net framework 3.5 SP1.." 

    DetailPrint "Proceeding to install dotnet bootstrap installer...." 
    sleep 1000 
MessageBox MB_YESNO|MB_ICONQUESTION "This software requires DotNet framework ${MIN_FRA_MAJOR}.${MIN_FRA_MINOR}.${MIN_FRA_BUILD}.$\r$\n$\r$\nDo you wish to install it now?" IDNO skip.DotNet 
    SetOutPath $TEMP 
    File "${PACKAGE_DIR_BIN}\dotNetFx35setup.exe" 
    GetDlgItem $0 $HWNDPARENT 1 
    System::Call "kernel32::CreateMutexA(i 0, i 0, t 'DotNetInstall') i .r0 ?e" 
    HideWindow 
    ExecWait "$TEMP\dotNetFx35setup.exe /qbf /norestart" $1 
    Delete "$TEMP\dotNetFx35setup.exe" 
    ShowWindow $0 ${SW_SHOW} 
    BringToFront 

    IntCmp $1 0 skip.DotNet 
    IntCmp $1 8192 skip.DotNet 
    IntCmp $1 3010 0 DotNetInstallationFailed DotNetInstallationFailed 
    SetRebootFlag true 
    goto skip.DotNet 

    DotNetInstallationFailed: 
    HideWindow 
    MessageBox MB_OK|MB_ICONSTOP "DotNet Framework 3.5 was not successfully installed on the machine" 
    Quit 

    skip.DotNet: 
FunctionEnD 

Herunterladen und verpacken 3.5 SP1 von Micorsoft

Mehr über NSIS

aktualisieren: Für 3.0 Check-Registry für HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0 Ordner.

1

Könnte dies ein .NET Service Pack-Problem sein? Wenn Sie Visual Studio 2008 verwenden, um Ihre Anwendung zu schreiben, richtet sich Ihre Anwendung, selbst wenn Sie sie explizit auf .NET 3.0 ausrichten, auf .NET 3.0 SP1, da diese von .NET 3.5 installiert wird (das von Visual Studio installiert wird) 2008). Sie könnten versuchen, den Computer des Benutzers auf .NET 3.0 SP1 (das als separater Download auf der Microsoft-Website verfügbar ist, glaube ich) zu aktualisieren und zu sehen, ob das das Problem behebt.