Perluas .exe x86 ke 'C:\Windows\System32' di bawah Windows x86 dan x64?

Saya ingin membuat penginstal saya kompatibel pada jendela x86/x64, ini berarti portabel.

Saya melakukan penginstal innosetup hanya untuk memperluas file x86 CLI yang dapat dieksekusi, dan saya perlu memperluasnya ke direktori C:\windows\system32 bahkan jika penginstal berjalan di bawah Windows x64 karena sebaliknya jika saya memperluasnya ke direktori C:\Windows\Syswow64 maka exe tidak dikenali di bawah Windows x64 CMD.

Jadi bagaimana saya harus mengatur properti ini agar portabel dengan kondisi yang ditentukan di atas?:

ArchitecturesInstallIn64BitMode= ???

Dan tanda apa yang harus saya gunakan saat memperluas file di sini?:

Source: {sys}\My_x86_application.exe; DestDir: {sys}; Flags: ??? 

Saya telah bermain-main sedikit dengan beberapa flag seperti 32Bit, 64Bit, dan Is64BitInstallMode, tetapi saya tidak bisa mendapatkan hasil yang diharapkan karena jika saya tahu bahwa konstanta terbatas karena {syswow64} menimbulkan kesalahan instalasi pada Windows x86...

MEMPERBARUI

Ini adalah bagian yang relevan dari skrip instalasi saya, tetapi salah, ini harus kompatibel dengan windows x86 dan x64 (portabel) dan hanya memperluas file Source: {sys}\* ke C:\Windows\System32 di bawah kedua jendela (tentu saja menggunakan konstanta {sys} untuk mendeteksi jalur direktori).

[Setup]
DefaultDirName={pf32}\{#AppName}
ArchitecturesAllowed=x86 x64
ArchitecturesInstallIn64BitMode=x64

[Files]
Source: {app}\*; DestDir: {app}; Flags: ignoreversion
Source: {sys}\*; DestDir: {sys}; Flags: ignoreversion 64bit

person ElektroStudios    schedule 24.11.2014    source sumber
comment
tapi... mengapa saya menerima dua suara negatif?, menurut saya pertanyaan saya terstruktur dengan baik dan dengan semua informasi yang diperlukan untuk pembantu. pembenci tanpa alasan...   -  person ElektroStudios    schedule 24.11.2014
comment
Apakah Anda yakin ingin menginstal aplikasi 32-bit ke dalam folder sistem 64-bit? Saya melihat bahwa command prompt 64-bit tidak dapat melihatnya, tapi itulah gunanya command prompt 32-bit. [juga tidak mendapatkan suara negatif; ++]   -  person TLama    schedule 25.11.2014
comment
Ya @TLama Saya sangat yakin dengan apa yang ingin saya lakukan karena dua alasan: 1) Seperti yang Anda ketahui System32 dan SysWow64 seperti Program Files(x86) dan Program Files adalah direktori untuk menginstal dengan benar dan membedakan arsitektur berbeda dari aplikasi yang sama, tetapi karena aplikasi saya adalah hanya x86 (Saya tidak memiliki aplikasi yang sama dengan x64) Saya tidak dapat terlibat konflik apa pun saat menginstalnya di direktori System32, maka saya tidak perlu khawatir tentang di mana dari kedua direktori saya memilih untuk menginstal exe saya, tetapi inilah yang masalah 2)   -  person ElektroStudios    schedule 25.11.2014
comment
2) CMD tidak dapat mengenali exe Jika saya menginstalnya ke Syswow64 (variabel lingkungan PATH saya benar dengan nilai default), saya hanya perlu menginstalnya di direktori System32. Terima kasih atas komentarnya dan maaf untuk bahasa Inggris saya.   -  person ElektroStudios    schedule 25.11.2014
comment
Ada banyak executable 32bit di syswow64 dan berfungsi.   -  person Sertac Akyuz    schedule 27.11.2014
comment
@Sertac Akyuz Benar, tapi bukan ini: sourceforge.net/projects/mp3gain/files/mp3gain/1.5.2/   -  person ElektroStudios    schedule 27.11.2014
comment
@Elektro - Saya tidak melihat sesuatu yang istimewa tentangnya. Saya punya mp3gain. Baru saja mencoba dan berjalan dari syswow64, baik dari cmd 32bit atau dari cmd 64bit. Saya tidak tahu mengapa Anda ingin memasukkannya ke dalam folder sistem. Maksud saya folder sistem apa pun, itu bukan file sistem.   -  person Sertac Akyuz    schedule 27.11.2014
comment
@Sertac Akyuz untuk menghemat waktu dan mengotomatiskan beberapa tugas di bawah CMD, Jika saya menambahkan mp3gain.exe ke System32 Saya menghindari memperluas mp3gain.exe ke lokasi lain kemudian memperbarui var lingkungan PATH, itu hanya instalasi yang lebih bersih. mp3gain.exe tidak berfungsi untuk saya di folder SysWow64 Jika saya mencoba memanggilnya dari CMD, saya menggunakan Windows 8.1 x64   -  person ElektroStudios    schedule 27.11.2014
comment
@Elektro - Anda tidak perlu mengutak-atik variabel jalur sistem. Yang perlu Anda lakukan adalah menambahkan entri registri di Jalur Aplikasi. ... Inilah yang terjadi jika Anda bertanya tentang solusi Anda, bukan masalah Anda. Solusi Anda salah, membuatnya berhasil tidak akan menjadikannya benar. Anda harus bertanya apa yang harus dilakukan agar dapat menjalankan program dari command prompt tanpa memasukkan path lengkap.   -  person Sertac Akyuz    schedule 27.11.2014
comment
@Sertac Akyuz Wah! Tampaknya sangat berguna, 10 tahun menyentuh Windows dan saya tidak mengetahuinya secara internal jadi saya hanya berasumsi ketika bertanya. tapi benarkah ini yang saya butuhkan untuk niat saya?, saya telah menambahkan nilai reg ini tetapi ketika saya masuk ke CMD dan saya menulis app.exe aplikasinya tidak dikenali...: [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\app.exe] @="C:\\app.exe" Jika ini benar-benar berfungsi dan saya hilang sesuatu maka tolong tulis jawabannya jika pekerjaan ini saya akan menandainya sebagai diterima, terima kasih atas bantuan Anda   -  person ElektroStudios    schedule 27.11.2014
comment
@Elektro - Tampaknya tidak berfungsi langsung dari command prompt, heran mengapa... Jika Anda dapat menggunakan start padahal, tampaknya baik-baik saja.   -  person Sertac Akyuz    schedule 27.11.2014
comment
@Sertac Akyuz silakan lihat ini: stackoverflow.com/questions/27179818/   -  person ElektroStudios    schedule 28.11.2014
comment
@Elektro - Baiklah kalau begitu. Pertanyaan bagus IMO.   -  person Sertac Akyuz    schedule 28.11.2014


Jawaban (1)


Dijawab di bagian seperti pertanyaan Anda:

  1. ArchitecturesInstallIn64BitMode

    Nilai yang valid: Satu atau lebih dari berikut ini, dipisahkan dengan spasi:

    • x64
    • ia64

Nilai default: (kosong)

Deskripsi: Menentukan arsitektur prosesor 64-bit yang Penyiapannya harus diinstal dalam mode 64-bit. Jika arahan ini tidak ditentukan atau kosong, Setup akan selalu diinstal dalam mode 32-bit. Biasanya, Anda tidak boleh mengubah direktif ini dari nilai defaultnya kecuali aplikasi Anda berisi biner 64-bit asli.

Anda memiliki biner exe x86 jadi biarkan bidang tersebut kosong.

  1. Source (Wajib)

Deskripsi: Nama file sumber. Kompiler akan menambahkan jalur direktori sumber instalasi Anda jika Anda tidak menentukan nama jalur yang sepenuhnya memenuhi syarat.

Contoh:

Source: "My_x86_application.EXE"

Membiarkannya tanpa jalur apa pun seperti entri di atas mungkin optimal (untuk proyek kecil, karena akan mengacaukan file yang akan digunakan dengan skrip pengaturan). Selain itu, berhati-hatilah karena Konstanta hanya dapat digunakan ketika tanda external ditentukan, karena kompiler tidak melakukan penerjemahan konstan apa pun. Jadi, entri berikut:

Source: {sys}\My_x86_application.exe; DestDir: {sys}

sebenarnya mengharapkan biner disimpan di subfolder {sys} direktori dengan skrip pengaturan. Jika tidak demikian, kompilasi akan gagal.

  1. DestDir (Wajib)

Saya rasa Anda dapat menentukan System32 selalu menggunakan {win}\System32. Karena Windows versi x86 dan x64 berisi direktori System32.

  1. Untuk Flags dan klarifikasi keraguan lebih lanjut, kunjungi halaman ini.

EDIT: Simpan file iss di folder yang sama tempat biner exe x86 Anda berada. Lalu Jalankan.

person Anirban Sarkar    schedule 26.11.2014
comment
You should have gone there in the first place. It's just one google search ("inno setup") away. All sentences in italics are an exact copy from there. Saya sudah mengetahui tanda dan nilai lain yang Anda sebutkan dan saya juga mengetahui (sebagian besar) deskripsi/detail masing-masingnya, tetapi Google tidak menjelaskan cara menggabungkannya dengan benar untuk skenario khusus ini. - person ElektroStudios; 26.11.2014
comment
@ElektroStudios Sudahkah Anda mencoba menjalankan pengaturan? Biarkan saja tandanya sebagai default. Karena itu adalah DestDir yang bermasalah. - person Anirban Sarkar; 26.11.2014
comment
@Anirban, jawabannya apa? Anda baru saja menyalin/menempelkan kutipan dari dokumentasi dan Anda berspekulasi apa fungsinya. Catatan terakhirmu Seharusnya kau pergi ke sana dulu. Hanya dengan satu pencarian Google (penyiapan inno) menurut saya tidak sopan. Dan catatan Anda Sudahkah Anda mencoba menjalankan pengaturannya? berguna untuk apa? Jika berjalan, tidak apa-apa atau bagaimana? Anda harus selalu memahami apa yang Anda lakukan... - person TLama; 27.11.2014
comment
@Tlama Seperti yang Anda lihat di komentar Anda sebelumnya, jika ElectroStudios mengetahui semua tentang flag, maka tidak ada yang tersisa selain deskripsi. Saya juga telah memposting jawaban atas pertanyaan spesifik yang disimpulkan dari dokumentasi itu sendiri. Terakhir, apakah salah meminta pengguna mencoba solusinya? - person Anirban Sarkar; 27.11.2014
comment
@Anirban, lalu mengapa Anda berkonsultasi dengan parameter Source misalnya? Bagaimana kaitannya dengan masalah yang ditanyakan di sini? Selain itu, Anda mengatakan membiarkannya tidak berubah, tanpa konstanta apa pun seperti contoh di atas adalah optimal karena Konstanta hanya dapat digunakan ketika tanda eksternal ditentukan, karena kompiler tidak melakukan penerjemahan konstan apa pun. Dalam hal apa bagaimanakah optimal? - person TLama; 27.11.2014
comment
@Tlama Penginstal mengasumsikan jalur dari mana ia dijalankan. Oleh karena itu, lebih baik membiarkan bidang tersebut tanpa konstanta seperti {sys} yang ditentukan dalam pertanyaan. - person Anirban Sarkar; 27.11.2014
comment
@Anirban, omong kosong. Parameter Source adalah sumber file yang digunakan pada waktu kompilasi (kecuali jika Anda menentukan tanda external). Ini tidak ada hubungannya dengan sistem tempat pengaturan akan dijalankan, dan karenanya tidak ada hubungannya dengan pertanyaan tersebut. Anda dapat membacanya di dokumentasi jika Anda menyebutkannya. - person TLama; 27.11.2014
comment
@Tlama Agar file setup dikompilasi di folder selain %SystemRoot%\System32. (Saya tidak tahu di mana sumber exe jadi saya berasumsi itu berada di tempat lain selain System32). Jalankan mengacu pada dijalankan pada waktu kompilasi (kompiler menjalankan skrip). Jalankan kompiler Inno Setup untuk mencari tahu. Saya pikir itu akan menjadi jelas bagi ElektroStudios. - person Anirban Sarkar; 27.11.2014
comment
@Anirban, tidak, maaf, saya tidak akan menjalankan kompiler :) Lagi pula, mengapa seseorang harus mengkompilasi pengaturan ke dalam folder sistem? Atau salin di sana sebagai pengguna? Namun, parameter Source digunakan pada waktu kompilasi (dalam kasus ini). Pertanyaan ini tentang waktu proses. - person TLama; 27.11.2014
comment
@Tlama, pertanyaan pertama Anda adalah alasan mengapa saya mencegah ElektroStudios menggunakan {sys} di Source (Lihat pertanyaannya). Yang kedua adalah keluaran yang diharapkan ElektroStudios. Namun, DestDir dibuat pada saat runtime dari penginstal yang dikompilasi, jadi pertanyaannya adalah tentang waktu kompilasi dan runtime. - person Anirban Sarkar; 27.11.2014
comment
@Anirban, oke, jadi bagaimana optimal seperti yang Anda katakan? Apakah optimal jika skrip dikompilasi (karena gagal jika ada yang menggunakan konstanta di sana)? - person TLama; 28.11.2014
comment
@Tlama File organisasi. Saya yakin lebih baik menyimpan file dari proyek yang sama di bawah folder yang sama daripada di folder Windows. Dan skrip tidak gagal untuk dikompilasi, ia hanya mengharapkan exe biner ada di folder Windows (yang sebenarnya tidak ada di sana tetapi beberapa folder lain - lihat edit.) Ketika file iss dijalankan dari folder yang sama folder sebagai exe, Source berharap menemukan exe di sana sendiri. Dan karena exenya sudah ada, maka berhasil! - person Anirban Sarkar; 08.12.2014
comment
@Anirban, kecuali Anda menggunakan flag external, konstanta {sys} tidak akan diperluas ke folder sistem Windows saat digunakan dalam parameter Source (folder bernama {sys} akan menjadi subfolder dari folder dengan skrip Anda). Jadi untuk pertanyaan komentar saya, saya mengharapkan jawaban seperti, ini optimal karena Anda tidak perlu memiliki {sys} subfolder (dari folder dengan skrip Anda) dengan file yang Anda gunakan. Sudahlah. Saya sudah selesai di sini ;-) - person TLama; 12.12.2014
comment
@Tlama Mengapa Anda menggunakan konstanta sebaliknya, meskipun skenario Anda akan berlaku untuk siapa saja yang tidak menyetel tanda external. Dan agak terlambat, tapi saran sudah diterima, jawaban diedit ulang sesuai standar. - person Anirban Sarkar; 26.12.2014
comment
@Anirban, saya tidak mengerti komentar terakhir Anda, tetapi sekali lagi, tidak ada yang optimal jika tidak menggunakan konstanta dalam parameter Source. Mereka tidak akan meluas selama Anda menggunakan tanda external. Jika Anda menggunakan {sys} di jalur sumber, berarti Anda memiliki subfolder {sys} di direktori penerapan, atau kompilasi gagal. Dan jika Anda serius dengan penerapan, Anda harus memisahkan skrip penerapan dari file yang akan diterapkan, jadi tidak menggunakan struktur folder apa pun juga tidak optimal. Tapi terima kasih atas pembaruannya! Kalimat seperti Anda bisa mencarinya di Google mungkin dianggap tidak sopan di sini. - person TLama; 26.12.2014
comment
@Tlama Ini tidak berbicara tentang menjadi optimal tetapi bukankah menggunakan konstanta tanpa memperluasnya agak menggagalkan tujuan penggunaannya? Dan ya kesalahan ketik kecil di sebelumnya... - person Anirban Sarkar; 27.12.2014