EXEファイル作成について

タグの編集
投稿者 Dora  (中学生) 投稿日時 2009/8/14 15:39:54
みなさんこんにちは。Doraです。

最近RPGなどのゲームを作るアプリを探し漁っているのですが、なかなか自分に合ったものが見つかりません。
そこで、難しいのは分かっていますが、自分で作ってみようと思ったのですが、EXEファイルの作成の仕方が全然わかりません。

なので、みなさんの知恵を貸してください!
投稿者 Dora  (中学生) 投稿日時 2009/8/14 15:57:15
書き忘れました。VB2008 Standard Editionを使っています。
投稿者 覇王  (社会人) 投稿日時 2009/8/14 18:04:16
私は初心者なので間違ってたら申し訳ないのですが、
一応、回答させていただきます。

プロジェクトを保存したらビルドをします。
そうしたら、
ドキュメント\VisualStudio 2008\Project\「作成されたプロジェクト名」\bin\Debug
の中に、exeファイルができて、そこからプログラムを実行できます。
投稿者 まだまだ  (中学生) 投稿日時 2009/8/14 23:11:50
>ドキュメント\VisualStudio 2008\Project\「作成されたプロジェクト名」\bin\Debug
ビルドの場合はDebugではなくReleaseです。
Debugのほうはデバッグをするとできます。
投稿者 Dora  (中学生) 投稿日時 2009/8/15 13:17:21
すいません。説明の仕方が悪かったのでもう一度書きます。

自分の作ったアプリケーションでどうやって、新しいEXEファイルを作ればいいのでしょうか?
つまり、アクションゲームツクールなどのように、どうやったら、VB2008で作ったアプリケーションから新しいEXEファイルを出力できるのでしょうか?

僕のいっていることがぜんぜんわからなかったらすいません…
投稿者 neptune  (社会人) 投稿日時 2009/8/15 20:46:17
もう既に思いつく回答は付いてますけど。

同じような質問のスレッド
ht tp://social.msdn.microsoft.com/Forums/ja-JP/vbgeneralja/thread/21f81c71-4a85-48c0-80af-de89fc47c8b6/

もし、自分のアプリケーションから、自分以外のアプリケーションファイル(実行ファイル)
を作成したいと言うなら、極論を言えばできない事はないと思いますが、
新たに作る実行ファイルのすべての情報は最低限持っていなければできないと思います。
一個一個のバイナリ情報を書いて行ってファイルを作成と言う事・・・・極論の話です。
そんな話は聞いたことないですし、素直にコピーしたら一発で済むし。


目的を書いた方が親切なアドバイスをもらえますよ。
投稿者 Dora  (中学生) 投稿日時 2009/8/15 21:20:48
>もし、自分のアプリケーションから、自分以外のアプリケーションファイル(実行ファイル)
>を作成したいと言うなら、極論を言えばできない事はないと思いますが、

分りました。ご回答ありがとうございます。

>目的を書いた方が親切なアドバイスをもらえますよ。

すいません。これから気を付けます...
投稿者 あにす  (社会人) 投稿日時 2009/8/15 23:34:26
こういう事でしょうか?
System.CodeDom.Compiler.VBCodeProviderクラスでVBのコードから実行ファイルを生成できます。

Imports System.CodeDom.Compiler
Imports System.IO
Imports System.Text

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
        'ソースコード生成 
        Dim code As New StringBuilder()
        code.AppendLine("Imports System.Windows.Forms")
        code.AppendLine("Module StartUp")
        code.AppendLine("Sub Main()")
        code.AppendLine("Application.Run(New Form())")
        code.AppendLine("End Sub")
        code.AppendLine("End Module")

        'コンパイルに必要なオブジェクト生成 
        Dim compiler As New VBCodeProvider()
        Dim param As New CompilerParameters()

        'コンパイルに必要なパラメータ設定 
        param.OutputAssembly = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "test.exe")
        param.ReferencedAssemblies.Add("System.Windows.Forms.dll")
        param.CompilerOptions &= "/target:winexe"
        param.GenerateExecutable = True

        'コンパイル、出力取得 
        Dim res As CompilerResults = compiler.CompileAssemblyFromSource(param, code.ToString())
        For Each row As String In res.Output
            Me.Label1.Text &= row & Environment.NewLine
        Next
    End Sub
End Class
投稿者 brv  (中学生) 投稿日時 2009/8/15 23:41:44
VBやC#のコードをコンパイルしてEXEファイルを生成することはできますよ。
http://brv314.web.fc2.com/samples/compiler.html

ネイティブコードのEXEはもうちょっと難しいと思います。
ここのページにはEXEの構造が載ってます。
http://codezine.jp/article/corner/61
投稿者 brv  (中学生) 投稿日時 2009/8/15 23:45:00
あ…
書いていたらあにすさんのとかぶってしまいました。
内容もほぼ同じですね…
投稿者 Dora  (中学生) 投稿日時 2009/8/16 17:07:16
あにすさん、brvさん、ありがとうございます!

>こういう事でしょうか?
>System.CodeDom.Compiler.VBCodeProviderクラスでVBのコードから実行ファイルを生成できます。

System.CodeDom.Compiler.VBCodeProviderクラスなんて、全然知りませんでした!

brvさん、EXEファイル作成についてのウェブページのURL、ありがとうございます!