2009-07-08 6 views
1

Récemment, j'ai créé l'application WPF et je souhaite la publier pour de nombreux utilisateurs, mais l'application semble avoir des problèmes sur certaines machines utilisateur cibles. Il se bloque simplement lorsque l'utilisateur le démarre. Je construis une application avec .NET Framework v.3.0 en tant que version cible et l'utilisateur a installé .NET Framework. Je veux juste un moyen de m'assurer (par exemple avec l'installation du système) que mon application fonctionnera sans erreurs. Ce qui est vraiment étrange, sur mes PC de test (sans Visual Studio installé mais seulement avec .NET Framework 3.0) fonctionne parfaitement. L'application ne possède aucune référence supplémentaire, à l'exception de celles de .NET.Comment s'assurer que l'application WPF fonctionnera parfaitement sur l'ordinateur de l'utilisateur?

Voici un lien pour télécharger cette application, donc si vous voulez, vous pouvez le tester: http://nippon.is74.ru/ForismaticTray.7z

Répondre

2

Utilisez un installateur comme NSIS et vérifier votre cadre. Si ce ne est pas sur la machine cible, installez de it.Here ce que je fais dans NSIS

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 

Téléchargez et empaqueter 3.5 SP1 de Micorsoft

En savoir plus sur NSIS

Mise à jour: Pour 3.0 Registre de contrôle pour le dossier HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0.

1

Cela peut-il être un problème avec le service pack .NET? Si vous utilisez Visual Studio 2008 pour écrire votre application, même si vous la définissez explicitement sur .NET 3.0, votre application ciblera essentiellement .NET 3.0 SP1, car celle-ci est installée par .NET 3.5 (installé par Visual Studio). 2008). Vous pouvez essayer de mettre à jour la machine de l'utilisateur vers .NET 3.0 SP1 (qui est disponible en téléchargement séparé sur le site de Microsoft, je crois) et voir si cela résout le problème.

Questions connexes