none
InstallShield Limted Edition で インストールしたソフトが おかしな動作をします。 RRS feed

  • 質問

  • InstallShield Limted Edition で インストールしたソフトが おかしな動作をします。

    二つの問題があります、

    一つめは、InstallShield Limted Edition で作成したsetup.exeで、 インストールした

    C:\Program Files (x86) の場所にある プログラムファイル(.exe ファイル)なのですが、

    クリックしても ソフトウェアが起動しません、どうしてでしょうか?

    そのプログラムファイルの ショートカットを 作成してもだめで、

    プログラムファイル(.exe ファイル)を コピーして デスクトップなどに貼り付け

    クリックをすれば 正常にソフトウェアは 起動します。

    何故でしょうか?

    二つめは、一つめと 関連しているように思えます、

    InstallShield Limted Edition で作成したsetup.exeで、 

    デスクトップに、ソフトのショートカットが 作成されますが

    その作成された ショートカットを クリックすれば ソフトは

    正常に起動しますが、そのソフトに関連したファイルが デスクトップ上に

    作成されてしまいます、

    本来なら、プログラムファイル(.exe ファイル)がある場所に 作成されるファイルが

    デスクトップの ショートカットの周りに できてしまいます。

    この二つの問題を 解決する方法を教えて下さい、

    よろしくお願いします。

    2015年9月1日 9:03

回答

  • 近年のWindowsにおいては、セキュリティのために%ProgramFiles%や%ProgramFiles(x86)%内には管理者権限がないとファイルを作成することはできません。(UACというものです)
    起動時にファイルを作成しようとして、UnauthorizedAccessExceptionが発生して起動に失敗しているのではないでしょうか?
    実行ファイルをデスクトップなどに配置した場合はこのような制限がないためにファイル作成が成功するのでしょう。

    デスクトップにあるショートカットから起動した場合に作業フォルダがデスクトップに設定されて、その作業フォルダ(カレントディレクトリ)をプログラム内で変更せずファイルを作成していると、デスクトップにファイルが作られることになります。

    実行時に作成するファイルは実行ファイルのフォルダに作らずに適切な場所に作るようにプログラムを変更しましょう。
    適切な場所の選定はSystem.Environment.Specialfolderをつかうといいです。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク 星 睦美 2015年9月8日 6:36
    2015年9月1日 9:50
  • InstallShield を使ったかどうかではなく、exe のある場所かカレントディレクトリにファイルを作成もしくは書き込みモードでファイルをオープンするという処理を起動時に行っていませんか?

    C:\Program Files(x86) とそのサブフォルダは、書き込みに管理者権限が必要になっています。

    アプリケーションがどういうものかによって修正方法は異なりますが、世の中の大半のアプリケーションは、カレントではなくSystem.Environment.SpecialFolder.ApplicationData のサブフォルダなどにファイルを作成するようにすることで、アカウントの問題のほとんどは解決します。


    とっちゃん@わんくま同盟, Microsoft MVP for Visual C++ (Oct 2005-) http://blogs.wankuma.com/tocchann/

    • 回答としてマーク 星 睦美 2015年9月8日 6:36
    2015年9月1日 9:50

すべての返信

  • 近年のWindowsにおいては、セキュリティのために%ProgramFiles%や%ProgramFiles(x86)%内には管理者権限がないとファイルを作成することはできません。(UACというものです)
    起動時にファイルを作成しようとして、UnauthorizedAccessExceptionが発生して起動に失敗しているのではないでしょうか?
    実行ファイルをデスクトップなどに配置した場合はこのような制限がないためにファイル作成が成功するのでしょう。

    デスクトップにあるショートカットから起動した場合に作業フォルダがデスクトップに設定されて、その作業フォルダ(カレントディレクトリ)をプログラム内で変更せずファイルを作成していると、デスクトップにファイルが作られることになります。

    実行時に作成するファイルは実行ファイルのフォルダに作らずに適切な場所に作るようにプログラムを変更しましょう。
    適切な場所の選定はSystem.Environment.Specialfolderをつかうといいです。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク 星 睦美 2015年9月8日 6:36
    2015年9月1日 9:50
  • InstallShield を使ったかどうかではなく、exe のある場所かカレントディレクトリにファイルを作成もしくは書き込みモードでファイルをオープンするという処理を起動時に行っていませんか?

    C:\Program Files(x86) とそのサブフォルダは、書き込みに管理者権限が必要になっています。

    アプリケーションがどういうものかによって修正方法は異なりますが、世の中の大半のアプリケーションは、カレントではなくSystem.Environment.SpecialFolder.ApplicationData のサブフォルダなどにファイルを作成するようにすることで、アカウントの問題のほとんどは解決します。


    とっちゃん@わんくま同盟, Microsoft MVP for Visual C++ (Oct 2005-) http://blogs.wankuma.com/tocchann/

    • 回答としてマーク 星 睦美 2015年9月8日 6:36
    2015年9月1日 9:50
  • 一つめの問題は解決しました、

    ソフトウェアを、C:\Documents and Settings\[ユーザ名]\Application Dataの場所に

    インストール出来ました。

    二つ目の問題で、インストール時に作成される

    スタートメニューの アイコンをクリックした場合に ソフトが起動しません。

    InstallShield Limted Editionの 設定のような気がするのですが、

    デスクトップ上の アイコンをクリックすれば ソフトは起動して

    スタートメニューのクリックでは 起動しません

    どうすればいいでしょうか?

    よろしくお願いします。


    • 編集済み Gunnm2000 2015年9月2日 3:01
    2015年9月2日 3:00
  • インストール先のフォルダにある、EXEを直接実行(エクスプローラなどを利用すれば実行できます)した場合はどうなりますか?

    もし、起動しない場合は、プログラムに問題があるので、デバッグしてください。

    直接実行する場合は問題ないという場合はショートカットの作り方に問題があると思われますので、プロジェクトを編集して、ショートカットを作り直して見てください。


    とっちゃん@わんくま同盟, Microsoft MVP for Visual C++ (Oct 2005-) http://blogs.wankuma.com/tocchann/

    2015年9月2日 16:16
  • ショートカット作らず、直接プログラムファイル(.exe ファイル)を クリックして

    ソフトウェアを起動する仕様に することにします。

    ありがとうございました。

    2015年9月2日 23:45