1

最近、私は WPF アプリケーションを作成し、多くのユーザーに公開したいと考えていますが、一部のターゲット ユーザー マシンでアプリケーションに問題があるようです。ユーザーが起動すると、単にクラッシュします。ターゲット バージョンとして .NET Framework v.3.0 を使用してアプリをビルドし、ユーザー マシンには .NET Framework がインストールされています。(たとえば、システムをインストールするなどして) アプリケーションがエラーなしで実行されることを保証する方法が必要です。

本当に奇妙なことに、私のテスト PC (Visual Studio はインストールされていませんが、3.0 .NET Framework だけがインストールされています) では、完全に動作します。

アプリケーションには、.NET 以外の追加参照はありません。

このアプリケーションをダウンロードするためのリンクは次のとおりです。必要に応じてテストできます: http://nippon.is74.ru/ForismaticTray.7z

4

2 に答える 2

2

NSIS などのインストーラーを使用して、フレームワークを確認します。ターゲットマシンにない場合は、インストールします.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

Micorsoftから 3.5 SP1 をダウンロードしてパッケージ化する

NSISの詳細

更新: 3.0 の場合、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0フォルダのレジストリを確認してください。

于 2009-07-08T11:04:40.403 に答える
1

これは .NET サービス パックの問題でしょうか? Visual Studio 2008 を使用してアプリケーションを記述している場合、明示的に .NET 3.0 をターゲットに設定したとしても、アプリは基本的に .NET 3.0 SP1 をターゲットにします。 2008)。ユーザーのマシンを .NET 3.0 SP1 (Microsoft のサイトから個別にダウンロードできると思います) にアップグレードしてみて、問題が解決するかどうかを確認してください。

于 2009-07-08T11:10:37.740 に答える