কোন বিদ্যমান .exe, .dll এর জন্য সংস্করণ তথ্য কীভাবে সেট করব?


113

আমাদের বিল্ড প্রক্রিয়াটির অংশ হিসাবে আমাকে আমাদের সমস্ত সংকলিত বাইনারিগুলির জন্য সংস্করণ তথ্য নির্ধারণ করতে হবে। কিছু বাইনারি ইতিমধ্যে সংস্করণ তথ্য আছে (সংকলন সময়ে যুক্ত) এবং কিছু না।

আমি নিম্নলিখিত তথ্য প্রয়োগ করতে সক্ষম হতে চাই:

  • কোমপানির নাম
  • কপিরাইট নোটিশ
  • পণ্যের নাম
  • পণ্যের বর্ণনা
  • ফাইল সংস্করণ
  • পণ্য সংস্করণ

এই সমস্ত বৈশিষ্ট্য বিল্ড স্ক্রিপ্ট দ্বারা নির্দিষ্ট করা হয়েছে এবং সংকলনের পরে অবশ্যই প্রয়োগ করতে হবে। এগুলি সি ++ বিল্ডার 2007 এর সাথে সংকলিত স্ট্যান্ডার্ড বাইনারি (সমাহারগুলি নয়)।

কিভাবে আমি এটি করতে পারব?


রিসোর্সহ্যাকার কী ব্যবহারের জন্য ? ঠিক কিভাবে কাজ সেট করা হয়? কোন সমস্যায় UpdateResourceফাংশন ব্যবহার করুন, যদি বিদ্যমান পে
তে

এই চেষ্টা করুন: alternativeto.net/software/xn-resource-editor , আমি মনে করি রিভার্স ইঞ্জিনিয়ারিং টুলস এই না আছে
i_thamary

উত্তর:


59

যদিও এটি কোনও ব্যাচ প্রক্রিয়া নয়, ভিজ্যুয়াল স্টুডিও ফাইল সংস্থানগুলি যুক্ত / সম্পাদনা করতে পারে।

.EXE বা .DLL এ কেবল ফাইল-> ওপেন-> ফাইল ব্যবহার করুন। এটি পোস্ট-বিল্ডের পরে সংস্করণ তথ্য ফিক্সিংয়ের জন্য বা এই ফাইলগুলিতে এটি যুক্ত করার জন্য সহজ যা এই সংস্থানগুলি শুরু করে না।


8
এটি চেষ্টা করার সময় এটি পুরোপুরি কাজ করেছিল। সংস্করণ তথ্য সম্পূর্ণরূপে অনুপস্থিত এমন কোনও ফাইলের জন্য: ভিজ্যুয়াল স্টুডিওতে ডিএলএল খোলার পরে, সম্পাদনা> সংস্থান যোগ করুন> সংস্করণে যান এবং নতুন ক্লিক করুন। তারপরে নতুন সংস্করণ ট্যাবে, FILEVERSION এবং PRODUCTVERSION, CompanyName, ইত্যাদি পরিবর্তন করুন ফাইলগুলি সংরক্ষণ করুন এবং আপনি সব সেট করেছেন!
twasbrillig

2
@UweBaemayr। আপনি যে উত্তরটি উদ্ধৃত করেছেন আমি তাও অনুরোধ করতে চাই যেমন আমরা একই পোস্টটি তৈরি করতে পারি ঠিক তেমনই এটি স্বয়ংক্রিয় করতে পারি এবং আমি এটি স্বয়ংক্রিয় করতে চাই। কিন্তু কিভাবে ?
স্টিভসএমসিএম

1
আমার পুরানো ডেলফি উইন 32 ডিএল এর জন্য এটি কার্যকর হয় না। যথেষ্ট পরিমাণে dll তথ্য সঠিকভাবে পরিবর্তিত হয়, যখন এটির উপর তদন্ত পরীক্ষা করা হয় আপনি বুঝতে পারেন যে এটি দূষিত।
sthiers

3
উইন্ডোজ 8, ভিএস 2015 এ এটি (সংস্করণ তথ্য যুক্ত করুন) ব্যবহার করার চেষ্টা করেছেন এবং উইন্ডোজ এক্সপ্লোরারগুলিতে সব কিছুই ভাল, ব্যতিরেকে ... এক্সিকিউটেবল আর আরম্ভ হবে না।
লিভিউ

36

অন্যান্য উত্তরগুলির মতো অনেকগুলি, এই সমাধানটি সম্পূর্ণ বিনামূল্যে সফ্টওয়্যার ব্যবহার করে।

প্রথমত, Resources.rcএই জাতীয় নামক একটি ফাইল তৈরি করুন :

VS_VERSION_INFO VERSIONINFO
    FILEVERSION    1,0,0,0
    PRODUCTVERSION 1,0,0,0
{
    BLOCK "StringFileInfo"
    {
        BLOCK "040904b0"
        {
            VALUE "CompanyName",        "ACME Inc.\0"
            VALUE "FileDescription",    "MyProg\0"
            VALUE "FileVersion",        "1.0.0.0\0"
            VALUE "LegalCopyright",     "© 2013 ACME Inc. All Rights Reserved\0"
            VALUE "OriginalFilename",   "MyProg.exe\0"
            VALUE "ProductName",        "My Program\0"
            VALUE "ProductVersion",     "1.0.0.0\0"
        }
    }
    BLOCK "VarFileInfo"
    {
        VALUE "Translation", 0x409, 1200
    }
}

এর পরে, GoRC ব্যবহার করে এটি একটি .resফাইল সংকলন করতে ব্যবহার করুন:

GoRC /fo Resources.res Resources.rc

(একটি আয়না জন্য নীচে আমার মন্তব্য দেখুন GoRC.exe)

তারপরে এটি বিদ্যমানটিতে যুক্ত করতে রিসোর্স হ্যাকারটি সিএলআই মোডে ব্যবহার করুন .exe:

ResHacker -add MyProg.exe, MyProg.exe, Resources.res,,,

এটাই!


1
@ চার্লসবি আমি লক্ষ্য করেছি যে আমি নিজেই, তবে এটি সঠিক লিঙ্ক। দেখে মনে হচ্ছে যে কেউ তাদের ওয়েব হোস্টকে অর্থ প্রদান করতে ভুলে গেছেন! এখানে বাইনারিটি রয়েছে, আমি এটি আমার জনসাধারণের এসেম্বলা অ্যাকাউন্টে মিরর করে রেখেছি: assembla.com/code/danny-beckett/subversion/nodes/13/GoRC.exe
ড্যানি বেকেট

3
আপনি GoRC এর জায়গায় মাইক্রোসফ্ট রিসোর্স কম্পাইলার ব্যবহার করতে পারেন । এটি উইন্ডোজ এসডিকে-তে উপলব্ধ।
বিকাশকারী

রিসোর্স হ্যাকারের জন্য থাম্বস আপ, আমি এই উত্তরের ভিত্তিতে এটি ব্যবহার করেছি এটি দুর্দান্ত এবং দুর্দান্ত। (প্রোগ্রাম বা নির্মাতার সাথে কোনও সম্পর্ক নেই ;-)
ব্যবহারকারী 2109254

@ উউকিউম আমি এটি কিছুক্ষণ ব্যবহার করি নি, তবে আমি নিশ্চিত যে তাদের প্রয়োজন।
ড্যানি বেকেট

6
কমান্ড লাইনটি কিছুটা পরিবর্তিত হয়েছে বলে মনে হচ্ছে: ResourceHacker.exe -open Source.dll -save Changed.dll -action addoverwrite -resource Version.resএছাড়াও, রিসোর্সহ্যাকার নিজেই .rc ফাইলটি সংকলন করতে পারে:ResourceHacker.exe -open Version.rc -save Version.res -action compile
ইউসুফ তারেক গয়নায়ডন

23

অথবা আপনি উইন 32 ই এম / ডিএল ফাইলের জন্য ফ্রিওয়্যার স্ট্যাম্পভাইয়ারটি পরীক্ষা করে দেখতে পারেন ।
এটি কেবল ফাইল এবং পণ্য সংস্করণগুলিকে পরিবর্তন করবে যদিও তাদের যদি ইতিমধ্যে সংস্করণ সংস্থান থাকে। এটির কোনও উপস্থিতি না থাকলে এটি কোনও সংস্করণ সংস্থান যুক্ত করতে পারে না।


19

rcedit আপেক্ষিক নতুন এবং কমান্ড লাইন থেকে ভাল কাজ করে: https://github.com/atom/rcedit

$ rcedit "path-to-exe-or-dll" --set-version-string "Comments" "This is an exe"
$ rcedit "path-to-exe-or-dll" --set-file-version "10.7"
$ rcedit "path-to-exe-or-dll" --set-product-version "10.7"

এমন একটি এনপিএম মডিউলও রয়েছে যা এটি জাভাস্ক্রিপ্ট থেকে মুড়িয়ে দেয় এবং গ্রান্ট ব্যবহার করার ক্ষেত্রে গ্রান্ট টাস্ক


5
নোট করুন যে রিসিডিট কেবলমাত্র বিদ্যমান সংস্থানগুলিকে সংশোধন করতে পারে নতুন সন্নিবেশ না করে
বেভান কলিন্স

2
7 জিপ এসএফএক্স সংরক্ষণাগারগুলি নিয়ে কাজ করে না: / মাত্র 7 জিপ সংরক্ষণাগার অংশটি কেটে দেয়।
এমগামেরজ

1
এটি চেষ্টা করে, একই ডিরেক্টরিতে থাকা অবস্থায় ফাইল লোড করতে অক্ষম রাখে এবং মনে হয় যে সরঞ্জামটি হোস্ট কনফিগারেশনের উপর নির্ভর করতে পারে
অ্যারিজুন

7ZS.sfx স্টাবের সাথে কাজ করে, যা VERSIONINFO এর সাথে প্রথম অংশ যা আপনি স্ব-উত্তোলনের সংরক্ষণাগারটি একসাথে করতে ব্যবহার করেন use ম্যানুয়ালি আপনি 7zS.xe এ 7zS.sfx নাম পরিবর্তন করতে পারেন এবং এটি ভিজ্যুয়াল স্টুডিওতে সম্পাদনা করতে পারেন তবে যেহেতু সংস্করণ নম্বরটি প্রতিটি বিল্ডের জন্য পরিবর্তিত হয় আপনি সেট করার জন্য র‌্যাশিত বিবৃতি সহ একটি ব্যাচ ফাইল পছন্দ করেন।
AndresRohrAtlasInformatik

1
এই সরঞ্জামটি খুব বাজে, আপনার বাইনারিগুলিতে এটি প্রয়োগ করার আগে দয়া করে এই বাগটি দেখুন: github.com/electron/rcedit/issues/51
ব্রুন

14

এই জাতীয় কিছু সম্পর্কে কি?

verpatch /va foodll.dll %VERSION% %FILEDESCR% %COMPINFO% %PRODINFO% %BUILDINFO%

সম্পূর্ণ উত্স সহ এখানে উপলব্ধ ।


ভার্পাচ আমার কাছে খারাপ /va /pvবিকল্প সংস্করণ সংস্থান তৈরি করার বিকল্প বলে মনে হচ্ছে ( বিকল্পটি ব্যবহার করে )। সংস্করণটি উইন্ডোজ এক্সপ্লোরারে সঠিকভাবে উপস্থিত হয়েছিল তবে কোডটি পুনরুদ্ধার করার পরে সর্বশেষ অক্ষরটি অনুপস্থিত ছিল VerQueryValue। খারাপ সংস্থানটি ঠিক করার জন্য, আমি এটি করেছি: (1) রিসোর্স হ্যাকারে ডিএলএল লোড করুন। (২) সংস্করণ সংস্থান দেখুন। (3) সংকলন করুন (কিছু সংশোধন করুন তারপরে বোতামটি সক্ষম করতে এটি আবার পরিবর্তন করুন)। (4) সংরক্ষণ করুন।
ড্যান-জিএফ

ভারপ্যাচটি আমার ডি বক্সে আমার ডিএলএলগুলির x64 এবং x86 উভয় সংস্করণের জন্য দুর্দান্ত কাজ করে তবে অ্যাপিভিয়ার বিল্ড প্রজেক্টে এটি কেবল x64 এর জন্য কাজ করে এবং এটি x86 ডিএলকে একেবারে কিছুই করছে না - হয় ত্রুটিও নয়! কোন ইঙ্গিত কি ঘটতে পারে? আমি অ্যাপভেয়ারে লগে দেখতে পাচ্ছি যে ভার্পাচ কমান্ডটি কার্যকর হচ্ছে, কোনও ত্রুটি নেই, এবং dll কোনওভাবে প্রতিস্থাপন হচ্ছে না এবং শেষ পর্যন্ত এটির সংস্করণ স্ট্যাম্পটি নেই; এক্স 64 এর জন্য সমস্ত পরিস্থিতিতে সমস্ত কিছু ঠিক আছে। কোন সূত্র দয়া করে?
ওভি

@ ওভি-ওয়ান কেনোবি: অ্যাভেভিয়ার কী ছিল তা আমি জানতাম না, তবে আপনার বিবরণ অনুসারে এটি আমার কাছে অ্যাভিয়েয়ার সমস্যার মতোই বেশি লাগে। সবচেয়ে খারাপ, যদি এটি সম্ভব হয় তবে অ্যাভেভিয়ার পরিবেশে কিছু ডিবাগ করার জন্য প্রস্তুত হন? ...
ফিলোফেল

10

এই সরঞ্জামটি চেঞ্জভার্সন [1]

বৈশিষ্ট্যগুলির তালিকা (ওয়েবসাইট থেকে):

  • কমান্ড লাইন ইন্টারফেস
  • .EXE, .DLL এবং .RES ফাইলগুলির জন্য সমর্থন
  • সংস্করণ মাস্কের উপর ভিত্তি করে ফাইল ভার্সন এবং প্রোডাক্ট ভার্সন আপডেট করুন
  • সংস্করণ কী স্ট্রিং যুক্ত / পরিবর্তন / অপসারণ
  • ফাইল পতাকা সামঞ্জস্য করুন (ডিবাগ, বিশেষ, ব্যক্তিগত ইত্যাদি)
  • প্রকল্প ফাইল আপডেট করুন (.bdsproj | .bpr | .bpk | .dproj)
  • প্রধান অ্যাপ্লিকেশন আইকন যোগ / পরিবর্তন
  • কনফিগারেশন সহ ini ফাইল ব্যবহার করুন
  • উইন্ডোজ ভিস্তার সহায়তা (উন্নয়নের প্রয়োজন)
  • একটি অবিচ্ছিন্ন বিল্ডিং পরিবেশে সংহত করা সহজ

সম্পূর্ণ প্রকাশ: আমি যে লোকটি এই সরঞ্জামটি লিখেছি তা আমি জানি, আমি তার সাথে কাজ করতাম। তবে এর অর্থ এইও যে আমি জানি যে তিনি মানের সফ্টওয়্যার তৈরি করেন;)


[1] লিঙ্কটি মারা গেছে। সেখানে সংস্করণ প্রতিফলিত হবে বলে মনে হয় download.cnet.com


@ গ্যারেথ আমি একটি মিরর লিঙ্ক যুক্ত করেছি। অন্যদিকে, আমি সন্দেহ করি যে কোনও উত্তর দেওয়া ছাড়াই এই উত্তরটির কোনও মূল্য আছে।
নেকড়ে

5
মেয়াদ উত্তীর্ণ হওয়া সরঞ্জামে দ্বিতীয় লিঙ্কের ফলাফল"Change Version v2012.9.6.0 - (C)2007-2012 The-Software-Box.com This trial version has expired"
প্রীত সংঘ

2
কমান্ড লাইনে এটি চালানোর সময়, এটি "সংস্করণ পরিবর্তন করুন v2012.9.6.0 - (সি) 2007-2012 The- সফটওয়্যার- বক্স.কম এই ট্রায়াল সংস্করণটির মেয়াদ শেষ হয়ে গেছে"
আরডেভোপার

10

আমি কোনও অতিরিক্ত সরঞ্জাম দিয়ে এটি করছি। আমি আমার উইন 32 অ্যাপ প্রোজেক্টে সবেমাত্র নিম্নলিখিত ফাইলগুলি যুক্ত করেছি।

একটি হেডার ফাইল যা আমাদের রিসোর্স ফাইল এবং এমনকি প্রোগ্রাম কোডে আমরা পুনরায় ব্যবহার করতে পারি তার চেয়ে কিছু স্থিরতা সংজ্ঞায়িত করে। আমাদের কেবল একটি ফাইল বজায় রাখা দরকার। Qt টিমকে ধন্যবাদ জানায় যে কিউট প্রকল্পে এটি কীভাবে করতে হবে তা আমাকে দেখিয়েছে, এটি এখন আমার উইন 32 অ্যাপেও কাজ করে।

---- [version.h] ----

#ifndef VERSION_H
#define VERSION_H

#define VER_FILEVERSION             0,3,0,0
#define VER_FILEVERSION_STR         "0.3.0.0\0"

#define VER_PRODUCTVERSION          0,3,0,0
#define VER_PRODUCTVERSION_STR      "0.3.0.0\0"

#define VER_COMPANYNAME_STR         "IPanera"
#define VER_FILEDESCRIPTION_STR     "Localiza archivos duplicados"
#define VER_INTERNALNAME_STR        "MyProject"
#define VER_LEGALCOPYRIGHT_STR      "Copyright 2016 ipanera@gmail.com"
#define VER_LEGALTRADEMARKS1_STR    "All Rights Reserved"
#define VER_LEGALTRADEMARKS2_STR    VER_LEGALTRADEMARKS1_STR
#define VER_ORIGINALFILENAME_STR    "MyProject.exe"
#define VER_PRODUCTNAME_STR         "My project"

#define VER_COMPANYDOMAIN_STR       "www.myurl.com"

#endif // VERSION_H

---- [MyProjectVersion.rc] ----

#include <windows.h>
#include "version.h"

VS_VERSION_INFO VERSIONINFO
FILEVERSION     VER_FILEVERSION
PRODUCTVERSION  VER_PRODUCTVERSION
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904E4"
        BEGIN
            VALUE "CompanyName",        VER_COMPANYNAME_STR
            VALUE "FileDescription",    VER_FILEDESCRIPTION_STR
            VALUE "FileVersion",        VER_FILEVERSION_STR
            VALUE "InternalName",       VER_INTERNALNAME_STR
            VALUE "LegalCopyright",     VER_LEGALCOPYRIGHT_STR
            VALUE "LegalTrademarks1",   VER_LEGALTRADEMARKS1_STR
            VALUE "LegalTrademarks2",   VER_LEGALTRADEMARKS2_STR
            VALUE "OriginalFilename",   VER_ORIGINALFILENAME_STR
            VALUE "ProductName",        VER_PRODUCTNAME_STR
            VALUE "ProductVersion",     VER_PRODUCTVERSION_STR
        END
    END

    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1252
    END
END

2
উৎসুক; আপনি যখনই কোনও ডায়ালগ পরিবর্তন করবেন বা প্রকল্পের কোনও সংস্থান পরিবর্তন করবেন তখন আপনি কীভাবে আপনার .rc ফাইলটি ওভাররাইট করা থেকে উইন্ডোজকে থামিয়েছিলেন? আমি এখনও অবধি এরকম বেশ কয়েকটি নিবন্ধ দেখেছি এবং মনে হচ্ছে এটি যদি কাজ করে তবে আপনাকে আবার কখনও কোনও উত্স পরিবর্তন করতে না পারে যা আইডিই দ্বারা স্বয়ংক্রিয় উত্পাদন ঘটায়।
shawn1874

@ shawn1874 - স্বয়ংক্রিয়ভাবে যুক্ত #include <windows.h>হওয়া resource.hফাইলটিতে লাইনটি অন্তর্ভুক্ত করুন । এই ফাইলটি পুনরায় জেনারেট করা হয়নি (.rc ফাইলের শীর্ষে নোট করুন এটি এটি উত্পন্ন কোড নির্দেশ করে এবং ডিজাইনারে পরিবর্তন করা যেতে পারে)।
সিজেবিএস

1
@ সিজেবিএস যা প্রশ্নের উত্তর দেয় না। যদিও এটি কার্যকর হতে পারে, এটি পোস্ট উত্তরটি কীভাবে কাজ করতে পারে তা ব্যাখ্যা করে না। পোস্ট করা উত্তরে ব্যবহারকারী 3016543 সরাসরি .rc ফাইলের মধ্যে সংস্করণ সহ অন্তর্ভুক্ত করছে। .Rc ফাইলের ওভাররাইটটি মোকাবেলা করার বিভিন্ন উপায় রয়েছে যা আমি কীভাবে জানি। আমি কেবল এইভাবে উত্তর দিচ্ছি যেভাবে এই বিশেষ উত্তরটি দেখানো হয়েছে কারণ এটি আমার কাছে সঠিক দেখাচ্ছে না।
shawn1874

আমি অনুমান করছি যে পদ্ধতিটি তার জন্য কাজ করে কারণ প্রশ্নে উপাদানটিতে সংলাপের উপাদান নেই তাই ফাইলটি প্রায়শই বা কখনও পুনরায় জেনারেট হয় না। তবে এমএফসি ডায়ালগ সংস্থান সহ উইন্ডোজ অ্যাপ্লিকেশনটিতে এটি হবে না।
shawn1874

1
উইনব্যাচ এক্সটেন্ডার এসডিকে প্রেরণ করা একটি রিসোর্স ফাইলে আমি প্রথম এমন একটি কৌশলটি স্মরণ করিয়ে দেওয়ার জন্য ধন্যবাদ। আমার এটির প্রয়োজনের অনেক দিন হয়ে গেছে যে আমি বেশিরভাগ বিবরণটি ভুলে গিয়েছিলাম। আপনার ব্যাখ্যা সব এনেছে।
ডেভিড এ। গ্রে

8

verpatch ভাল জিনিস, কিন্তু ইউনিকোড অক্ষর হ্যান্ডেল না ...
চেষ্টা ResourceLib


5

অনেকগুলি দুর্দান্ত সরঞ্জাম দ্বারা উল্লিখিত একাধিক সরঞ্জাম রয়েছে, আমি একটি বাছাই করতে যাচ্ছি।

রিসোর্স হ্যাকার

আমি [অ্যাঙ্গাসজে] থেকে সর্বশেষ সংস্করণ ( 5.1.7 ) ডাউনলোড করেছি : রিসোর্স হ্যাকার । সমস্ত প্রয়োজনীয় তথ্য সেই পৃষ্ঠায় পাওয়া যাবে (কমান্ড লাইনের বিকল্পগুলি, স্ক্রিপ্টগুলি ...)। নিম্নলিখিত ওয়াকথ্রোতে আমি 2 এক্সিকিউটেবল (ল্যাব ইঁদুর) নিয়ে কাজ করতে যাচ্ছি (স্পষ্ট কারণে) আমি আমার সিডব্লিউডিতে অনুলিপি করেছি :

  • রিসোর্সহ্যাকার.এক্স : আমি ভেবেছিলাম এটি নিজেরাই চালানো আকর্ষণীয় হবে
  • cmake.exe : কোনও সংস্করণ তথ্য সেট ছাড়া এলোমেলো এক্সিকিউটেবল ( আমার মেশিনে v3.6.3 ইনস্টলেশন অংশ )

আরও যাওয়ার আগে, আমি উল্লেখ করতে চাই যে রিসোর্সহ্যাকারের একটি মজার টার্মিনাল আউটপুট রয়েছে এবং নিম্নলিখিত কপি / পেস্ট টুকরাগুলি কিছুটা বিভ্রান্তি সৃষ্টি করতে পারে।

1. সেটআপ

এটি আরও একটি প্রাথমিক পদক্ষেপের মতো, পরিবেশের সাথে পরিচিত হওয়ার জন্য, কোনও মজাদার ব্যবসা চলছে না তা দেখানোর জন্য ...

e:\Work\Dev\StackOverflow\q000284258> sopr.bat
*** Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ***

[prompt]> dir
 Volume in drive E is Work
 Volume Serial Number is 3655-6FED

 Directory of e:\Work\Dev\StackOverflow\q000284258

2019-01-28  20:09    <DIR>          .
2019-01-28  20:09    <DIR>          ..
2016-11-03  09:17         5,413,376 cmake.exe
2019-01-03  02:06         5,479,424 ResourceHacker.exe
2019-01-28  20:30               496 ResourceHacker.ini
               3 File(s)     10,893,296 bytes
               2 Dir(s)  103,723,261,952 bytes free

[prompt]> set PATH=%PATH%;c:\Install\x64\CMake\CMake\3.6.3\bin

[prompt]> .\cmake --help >nul 2>&1

[prompt]> echo %errorlevel%
0

[prompt]> .\ResourceHacker.exe -help

[prompt]>

==================================
Resource Hacker Command Line Help:
==================================

-help             : displays these abbreviated help instructions.
-help commandline : displays help for single commandline instructions
-help script      : displays help for script file instructions.




[prompt]> echo %errorlevel%
0

যেমনটি দেখা গেছে, এক্সিকিউটেবলগুলি ঠিক আছে, তারা সূক্ষ্মভাবে চালায় এবং তাদের বিশদগুলি (যা আমরা যত্ন করি) এটি কেমন দেখাচ্ছে:

Img0-প্রাথমিক

2. সম্পদ

রিসোর্স ফাইলগুলি এমন টেক্সট ফাইল যা সংস্থান থাকে। একটি উত্স (সরলীকৃত) এর রয়েছে:

  • নাম
  • আদর্শ
  • মান

আরও তথ্যের জন্য [এমএস ডকস] চেক করুন : রিসোর্স ফাইলগুলি সম্পর্কে । অনেকগুলি সরঞ্জাম রয়েছে (বিদ্যমান উত্তরে উল্লিখিত) যা রিসোর্স ফাইল সম্পাদনার সুবিধার্থে:

  • নতুন প্রকল্প শুরু করার সময় ভিস্টুডিও একটি ডিফল্ট তৈরি করে
  • ম্যানুয়ালি এই জাতীয় ফাইল তৈরি করা যায়
  • তবে, যেহেতু এটি রিসোর্স হ্যাকার সম্পর্কিত এবং:

    • এটি একটি বিদ্যমান এক্সিকিউটেবল থেকে সংস্থানগুলি সক্ষম করতে সক্ষম হয়
    • এটিতে এম্বেড করা সংস্থান রয়েছে (আগের ছবিতে প্রদর্শিত)

    আমি এই পদক্ষেপের জন্য এটি ব্যবহার করতে যাচ্ছি ( -action extract)

পরবর্তী, কোনও উত্সকে .exe ( .dll , ...) এ এম্বেড করার জন্য এটি অবশ্যই একটি বাইনারি ফর্মের সাথে সংকলন করতে হবে , যা পিই ফর্ম্যাটের সাথে খাপ খায় । আবার, প্রচুর সরঞ্জাম রয়েছে যারা এটি অর্জন করতে পারে তবে আপনি সম্ভবত অনুমান করেছিলেন যে আমি রিসোর্স হ্যাকারকে আটকে যাচ্ছি ( -action compile)।

[prompt]> :: Extract the resources into a file
[prompt]> .\ResourceHacker.exe -open .\ResourceHacker.exe -save .\sample.rc -action extract -mask VersionInfo,, -log con

[prompt]>

[28 Jan 2019, 20:58:03]

Current Directory:
e:\Work\Dev\StackOverflow\q000284258

Commandline:
.\ResourceHacker.exe  -open .\ResourceHacker.exe -save .\sample.rc -action extract -mask VersionInfo,, -log con

Open    : e:\Work\Dev\StackOverflow\q000284258\ResourceHacker.exe
Save    : e:\Work\Dev\StackOverflow\q000284258\sample.rc


Success!

[prompt]> :: Modify the resource file and set our own values
[prompt]>
[prompt]> :: Compile the resource file
[prompt]> .\ResourceHacker.exe -open .\sample.rc -save .\sample.res -action compile -log con

[prompt]>

[28 Jan 2019, 20:59:51]

Current Directory:
e:\Work\Dev\StackOverflow\q000284258

Commandline:
.\ResourceHacker.exe  -open .\sample.rc -save .\sample.res -action compile -log con

Open    : e:\Work\Dev\StackOverflow\q000284258\sample.rc
Save    : e:\Work\Dev\StackOverflow\q000284258\sample.res

Compiling: e:\Work\Dev\StackOverflow\q000284258\sample.rc
Success!

[prompt]> dir /b
cmake.exe
ResourceHacker.exe
ResourceHacker.ini
sample.rc
sample.res

আপনার ক্ষেত্রে রিসোর্স ফাইলটি সংরক্ষণ এবং সম্পাদনা করা প্রয়োজন হবে না, কারণ ফাইলটি ইতিমধ্যে উপস্থিত থাকবে, আমি কেবল এটি প্রদর্শনের উদ্দেশ্যে এটি করেছি। পরিবর্তিত হওয়ার পরে এটির নীচে সংস্থান ফাইল (এবং এভাবে সংকলনের আগে)।

নমুনা.সিআরসি :

1 VERSIONINFO
FILEVERSION 3,1,4,1592
PRODUCTVERSION 2,7,1,8
FILEOS 0x4
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
    BLOCK "040904E4"
    {
        VALUE "CompanyName", "Cristi Fati\0"
        VALUE "FileDescription", "20190128 - SO q000284258 demo\0"
        VALUE "FileVersion", "3.1.4.1592\0"
        VALUE "ProductName", "Colonel Panic\0"
        VALUE "InternalName", "100\0"
        VALUE "LegalCopyright", "(c) Cristi Fati 1999-2999\0"
        VALUE "OriginalFilename", "ResHack\0"
        VALUE "ProductVersion", "2.7.1.8\0"
    }
}

BLOCK "VarFileInfo"
{
    VALUE "Translation", 0x0409 0x04E4  
}
}

3. এম্বেড

এটি রিসোর্স হ্যাকার ( -action addoverwrite) দ্বারাও সঞ্চালিত হবে । যেহেতু .exe গুলি ইতিমধ্যে অনুলিপি করা হয়েছে আমি স্থানে তাদের সংস্থানগুলি সম্পাদনা করতে যাচ্ছি।

[prompt]> .\ResourceHacker.exe -open .\cmake.exe -save .\cmake.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con

[prompt]>

[28 Jan 2019, 21:17:19]

Current Directory:
e:\Work\Dev\StackOverflow\q000284258

Commandline:
.\ResourceHacker.exe  -open .\cmake.exe -save .\cmake.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con

Open    : e:\Work\Dev\StackOverflow\q000284258\cmake.exe
Save    : e:\Work\Dev\StackOverflow\q000284258\cmake.exe
Resource: e:\Work\Dev\StackOverflow\q000284258\sample.res

  Added: VERSIONINFO,1,1033

Success!

[prompt]> copy ResourceHacker.exe ResourceHackerTemp.exe
        1 file(s) copied.

[prompt]> .\ResourceHackerTemp.exe -open .\ResourceHacker.exe -save .\ResourceHacker.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con

[prompt]>

[28 Jan 2019, 21:19:29]

Current Directory:
e:\Work\Dev\StackOverflow\q000284258

Commandline:
.\ResourceHackerTemp.exe  -open .\ResourceHacker.exe -save .\ResourceHacker.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con

Open    : e:\Work\Dev\StackOverflow\q000284258\ResourceHacker.exe
Save    : e:\Work\Dev\StackOverflow\q000284258\ResourceHacker.exe
Resource: e:\Work\Dev\StackOverflow\q000284258\sample.res

  Modified: VERSIONINFO,1,1033

Success!

[prompt]> del /f /q ResourceHackerTemp.*

[prompt]> dir
 Volume in drive E is Work
 Volume Serial Number is 3655-6FED

 Directory of e:\Work\Dev\StackOverflow\q000284258

2019-01-28  21:20    <DIR>          .
2019-01-28  21:20    <DIR>          ..
2016-11-03  09:17         5,414,400 cmake.exe
2019-01-03  02:06         5,479,424 ResourceHacker.exe
2019-01-28  21:17               551 ResourceHacker.ini
2019-01-28  20:05             1,156 sample.rc
2019-01-28  20:59               792 sample.res
               5 File(s)     10,896,323 bytes
               2 Dir(s)  103,723,253,760 bytes free

হিসেবে দেখা, আমি দা সামান্য কৌতুক (ছিল gainarie ) হিসাবে আমি না (অন্তত আমি মনে করি না আমি করতে পারেন) করতে পারেন সংশোধন .exe ব্যবহারে হয়েছে।

4. পরীক্ষা

এটি নিশ্চিত করার জন্য এটি একটি alচ্ছিক পর্যায়ে:

  • এক্সিকিউটেবলগুলি এখনও কাজ করে (তারা প্রক্রিয়াটিতে গোলযোগ পায়নি)
  • সংস্থানগুলি যোগ / আপডেট করা হয়েছে
[prompt]> .\cmake --help >nul 2>&1

[prompt]> echo %errorlevel%
0

[prompt]> .\ResourceHacker.exe -help

[prompt]>

==================================
Resource Hacker Command Line Help:
==================================

-help             : displays these abbreviated help instructions.
-help commandline : displays help for single commandline instructions
-help script      : displays help for script file instructions.




[prompt]> echo %errorlevel%
0

এবং তাদের বিশদ :

Img1 ফাইনালে


@ কলোনেলপ্যানিক: আপনাকে ধন্যবাদ!
ক্রিসটিফতি

খুব সুন্দর উত্তর। দুর্ভাগ্যক্রমে রিসোর্সহ্যাকার আর রক্ষণাবেক্ষণ করা হয় না এবং বড় মাপের একটি EXE ফাইল সম্পাদনা করার চেষ্টা করার সময় স্মৃতি থেকে যায় না (3 গিগাবাইটের এক্সপি খোলার চেষ্টা করার সময় আমি ত্রুটি পেয়েছি)।
লেউস থেরিন

@ নিউজথেরিন: সর্বশেষতম সংস্করণ (উত্তরটিও ব্যবহার করা হয়েছে) 2019/01-এর, তাই আমি বলব এটির রক্ষণাবেক্ষণ খুব ভাল। সমস্যাটি এটি 32 বিট । আপনি 64 বিট সংস্করণ জিজ্ঞাসা করে লেখকদের সাথে যোগাযোগ করতে পারেন (আমি ধরে নিলাম যে তাদের কাছে ইতিমধ্যে কোড রয়েছে তাই এটি 64 বিটের জন্য এটি তৈরি করা কঠিন হবে না )।
ক্রিশ্চফাটি

3

নেই রিসোর্স টিউনার কনসোল Heaventools সফটওয়্যার থেকে।

রিসোর্স টুনার কনসোল একটি কমান্ড-লাইন সরঞ্জাম যা বিকাশকারীদের উইন্ডোজ 32- এবং 64-বিট এক্সিকিউটযোগ্য ফাইলগুলিতে প্রচুর সংখ্যক বিভিন্ন সংস্থান প্রকারের সম্পাদনা স্বয়ংক্রিয় করতে সক্ষম করে।

আরও তথ্যের জন্য বিশেষভাবে সংস্করণ পরিবর্তনশীল এবং সংস্করণ তথ্য পৃষ্ঠা আপডেট করা দেখুন।


3

পার্টিতে কিছুটা দেরি হয়ে গেছে, তবে যেহেতু আমি এটি সন্ধান করছিলাম (এবং আমার এটি আবার কখনও খুঁজে পেতে হবে), ভিএস2013 এক্সপ্রেসের অধীনে আমার সি ++ ডিএলএলতে সংস্করণ, সংস্থার নাম ইত্যাদি অন্তর্ভুক্ত করার জন্য আমি এখানে যা করেছি:

  1. একটি dllproj.rc ফাইল তৈরি এবং সম্পাদনা করা হয়েছে, যেমনটি পূর্বে উল্লিখিত রয়েছে।
  2. ডিএলএল প্রকল্পের প্রাক-বিল্ড পদক্ষেপ হিসাবে "rc.exe dllproj.rc" লাইনটি যুক্ত করা হয়েছে।
  3. প্রকল্পের জন্য রিসোর্স ফোল্ডারে dllproj.res যুক্ত করা হয়েছে।

আশাকরি এটা সাহায্য করবে!


3

উপরে @DannyBeckett থেকে উত্তর আমাকে অনেক সাহায্য করেছে,

আমি নিম্নলিখিতগুলি একটি ব্যাচের ফাইলে রেখেছি এবং আমি এটিকে একই ফোল্ডারে রাখি যেখানে রিসোর্সহ্যাকার.এক্সে এবং আমি যে EXE এ কাজ করি তা অবস্থিত এবং এটি দুর্দান্ত কাজ করে। [আপনার প্রয়োজন অনুসারে এটি সম্পাদনা করতে পারেন]

    @echo off
    :start1
    set /p newVersion=Enter version number [?.?.?.?]:
    if "%newVersion%" == "" goto start1
    :start2
    set /p file=Enter EXE name [for 'program.exe' enter 'program']:
    if "%file%" == "" goto start2
    for /f "tokens=1-4 delims=." %%a in ('echo %newVersion%') do (set ResVersion=%%a,%%b,%%c,%%d)
    (
    echo:VS_VERSION_INFO VERSIONINFO
    echo:    FILEVERSION    %ResVersion%
    echo:    PRODUCTVERSION %ResVersion%
    echo:{
    echo:    BLOCK "StringFileInfo"
    echo:    {
    echo:        BLOCK "040904b0"
    echo:        {
    echo:            VALUE "CompanyName",        "MyCompany\0"
    echo:            VALUE "FileDescription",    "TestFile\0"
    echo:            VALUE "FileVersion",        "%newVersion%\0"
    echo:            VALUE "LegalCopyright",     "COPYRIGHT © 2019 MyCompany\0"
    echo:            VALUE "OriginalFilename",   "%file%.exe\0"
    echo:            VALUE "ProductName",        "Test\0"
    echo:            VALUE "ProductVersion",     "%newVersion%\0"
    echo:        }
    echo:    }
    echo:    BLOCK "VarFileInfo"
    echo:    {
    echo:        VALUE "Translation", 0x409, 1200
    echo:    }
    echo:}
    ) >Resources.rc     &&      echo setting Resources.rc
    ResourceHacker.exe -open resources.rc -save resources.res -action compile -log CONSOLE
    ResourceHacker -open "%file%.exe" -save "%file%Res.exe" -action addoverwrite -resource "resources.res"  -log CONSOLE
    ResourceHacker.exe -open "%file%Res.exe" -save "%file%Ico.exe" -action addskip -res "%file%.ico" -mask ICONGROUP,MAINICON, -log CONSOLE
    xCopy /y /f "%file%Ico.exe" "%file%.exe"
    echo.
    echo.
    echo your compiled file %file%.exe is ready
    pause

[পার্শ্ব নোট হিসাবে আমি রিসোর্স ফাইলটি সংকলন করতে রিসোর্স হ্যাকারও ব্যবহার করেছি, জিওআরসি নয়]


2

আপনি আসলে ডাউনলোড লিঙ্ক থেকে FVIE ডাউনলোড করার চেষ্টা করতে পারেন এবং কোনও .exe ফাইলের জন্য তথ্য সম্পাদনা করার চেষ্টা করতে পারেন ।

(বা)

আপনি ডাউনলোড লিঙ্ক থেকে স্ট্যাম্পভিয়ার - উইন 32 সংস্করণ রিসোর্স স্ট্যাম্পিং ডাউনলোড করতে পারেন যা উইন্ডোজ .exe ফাইলগুলির জন্য সত্যই কার্যকর।

(বা)

আপনি আরসিইডিআইটি নামে একটি কমান্ড সরঞ্জাম ব্যবহার করতে পারেন । গিথুব সোর্স লিঙ্ক থেকে ডাউনলোড করুন এবং তারপরে ভিজ্যুয়াল স্টুডিও 2015 ব্যবহার করে বিল্ড করুন এবং তারপরে .exe ফাইলগুলির সংস্করণ পরিবর্তন করার জন্য আপনার কাছে নির্দিষ্ট আদেশ রয়েছে। বিভিন্ন উপলব্ধ কমান্ডের জন্য ডক্স লিঙ্কটি দেখুন ।


1

এই কাজের জন্য আমি দেখেছি এটি সেরা সরঞ্জাম, সমস্ত ফাইলের সংস্থানগুলিতে সম্পূর্ণ নিয়ন্ত্রণের অনুমতি দেয়, ভার্সনইনফো অন্তর্ভুক্ত।

দেখুন: ResourceEditor দ্বারা অ্যান্ডার্স Melander


1
রিসোর্স এডিটর (0 বাইট) এর ডাউনলোডটি নষ্ট হয়ে গেছে।
জ্যাক 21
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.