Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сделать таб "version" в свойствах exe - файла  (Прочитано 22054 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« : 28-09-2005 14:55 » 

Господа,

очередной вопрос из серии "с больной головы начальника на здоровую голову подчиненного" Ага :

есть файл с расширением exe. Если я правой клавишей мышки щелкну по нему в эксплорере и выберу property, то там окажется кроме всех прочих табов еще и таб "version", где стоит соответствыющая инфа насчет версии, комментарий и еще много всякого ненужного Ага .
Теперь вопрос: как это делается? Начальство хочет иметь это для наших экзешников (речь идет о табе "version"). А я с этим никогда не сталкивалась.

Информация к размышлению : экзешники я генерирую с помощью makefile - а, т.к. это проекты на Ц (а не Ц++), посему студией пользоваться не выходит.

Заранее спасибо.
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Alf
Гость
« Ответ #1 : 28-09-2005 17:42 » 

В ресурсах есть раздел - Version. Там оно все и живет.
Записан
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #2 : 29-09-2005 06:42 » 

Alf,

в каких ресурсах? Где их найти?
Это установки компилятора или что?
Пардон за тупость, но я ничэго не поняла ;-(
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Alf
Гость
« Ответ #3 : 29-09-2005 06:55 » 

Ресурсы - это что-то вроде раздела программы, где хранится всякая всячина, которая зачастую непосредственно к исполняемому коду не относится, но при этом ее неудобно хранить в отдельных файлах, чтобы не растерять. Например, к ресурсам относятся иконы, курсоры, строки (если строки не забивать намертво в код, а подгружать из ресурсов, то при помощи редактора ресурсов можно будет потом менять текст без перекомпиляции; бывает полезно, если, скажем, нужно писать программу для работы в разных странах), диалоговые окна, меню, курсоры и т.п. Всю эту всячину можно подгружать из ресурсов и потом использовать в программе.

Отдельным разделом в ресурсах идет версия, в этом разделе есть также сведения о разработчике, полном имени продукта и т.п, их видно на закладке "Версия".

Я как лентяй, изнеженный "Студией", использую ее встроенный графический редактор ресурсов. В принципе есть возможность описать ресурсы в отдельном текстовом файле, а потом откомпилировать. Но тут я не советчик, сам так не делаю. Нужно документацию глядеть, или спросить какого-нибудь гуру, который руками ресурсы делает.
Записан
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #4 : 29-09-2005 07:25 » 

Alf,

пардон за тупость - я мыслями была в своем проекте, где никаких ресурсов и т.д. нет, т.к. это ц - шный проект, посему никак не могла понять, о чем ты говоришь. Заклинило Ага
В том-то и дело, что это в студии все есть (как и в Одессе Ага ), а вот если без нее компилируешь, тогда как?
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 29-09-2005 07:31 » 

Malaja, а ты не пробовала makefile в студии открыть? Может получится. Тогда добавишь ресурсы.
Если нет, то смотри хелп по параметрам - один из них должен подключать файл ресурсов.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Alf
Гость
« Ответ #6 : 29-09-2005 07:38 » 

... а вот если без нее компилируешь, тогда как?

За достоверность не ручаюсь, ибо руками никогда не делал. Смутно помнится, что ресурсы описываются в специальном формате в файле .res, потом компилируются, и из них получается .rc

Ну а потом уже .rc цепляется к проекту какой-то опцией компилятора. Но сначала ресурсы компилируются отдельно, текст с ресурсами цеплят не получится.
Записан
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #7 : 29-09-2005 08:06 » 

Alf, Джон,

попробовала создать rc - файл с информацией о версии и подключить его к маке-файлу, не катит - он падает из-за отсутствия соответствующих инклудов из мфц. Если же я подключаю инклуды, то меня посылают в связи с тем, что мой код - файл имеет расширение .c , а не .cpp...
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #8 : 29-09-2005 08:43 » 

Маленько наоборот - .res является компилированной версией .rc - скрипта ресурсов.
.rc файлы компилируются rc.exe, а потом линкуются. Параметры rc.exe смотри в MSDN
"Using RC (The RC Command Line)"
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #9 : 29-09-2005 08:47 » 

Malaja, тебе надо сначала создать свой файл aaaaa.rc, затем откомпилировать его с помощью rc.exe в какой-нить ааааа.res. Затем слинковать с твоим екзешником (параметры не знаю - тоже смотри в МСДН) типа
link myfile.obj aaaaa.res
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #10 : 29-09-2005 09:39 » 

уря! Заработало!  Отлично  Отлично  Целую

В результате:

мой  .rc - файл имеет вид:

Код:
 

#include "winver.h"   // без этого инклуда все безропотно делается, но в результате - ничего не получается ;-)

#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 1,8,1,0
 PRODUCTVERSION 1,8,1,0
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040704B0"
        BEGIN
            VALUE "CompanyName", "ISO GmbH\0"
            VALUE "FileDescription", "saprfcsr_FF\0"
            VALUE "FileVersion", "1, 8, 1, 0\0"
            VALUE "InternalName", "saprfcsr_FF\0"
            VALUE "LegalCopyright", "Copyright (C) 2005\0"
            VALUE "LegalTrademarks", "\0"
            VALUE "OriginalFilename", "saprfcsr_FF.EXE\0"
            VALUE "ProductName", "Anwendung saprfcsr_FF\0"
            VALUE "ProductVersion", "1, 8, 1, 1\0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x407, 1200
    END
END

#endif    // !_MAC


И маке-файл имеет вид:
Код:
 

rc /i "C:\msvs\VC98\Include" /i "C:\msvs\VC98\MFC\Include" saprfcsr.rc

cl -nologo -Od -G5 -Z7 -Gs -W3 -J -D_X86_  -DWIN32 /V "1.8.1" /I "..\rfcsdk\include" /I "C:\msvs\VC98Include"
/I "проектные инклуд-пути" /DEF:saprfcsr.def saprfcsr.c Trace.c saprfcsr.res librfc32.lib C:\msvs\VC98\Lib\libc.lib


Я поубирала в перечислениях файлов и либов почти все, чтобы никого не путать, т.к. к делу это никакого отношения не имеет, а запутать может на раз Ага

Единственный оставшийся вопрос - как можно автоматизировать пересчет номера версии? Т.е. сейчас это жестко заданное число и при последующей компиляции оно не изменится.
Или еще один вопрос - как можно в маке-файле сделать так, чтобы при компиляции задавался вопрос типа "изменился ли номер версии? если да- введите", посел чего введенная инфа записывалась бы в соответствующую переменную?
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #11 : 29-09-2005 10:34 » 

Только ручками Улыбаюсь

В студии это делается с помощью макроса. А в косоли придётся сделать небольшую программку, которая будет открывать rc файл и изменять версию. Для совместной работы лучше сделать bat-файл. Типа

@echo off

incver.exe vers_dat.h

rc /i "C:\msvs\VC98\Include" /i "C:\msvs\VC98\MFC\Include" saprfcsr.rc

cl -nologo -Od -G5 -Z7 -Gs -W3 -J -D_X86_  -DWIN32 /V "1.8.1" /I "..\rfcsdk\include" /I "C:\msvs\VC98Include"
/I "проектные инклуд-пути" /DEF:saprfcsr.def saprfcsr.c Trace.c saprfcsr.res librfc32.lib C:\msvs\VC98\Lib\libc.lib

Кстати #include "winver.h"  нужен для дефайнов, которые у тебя используются в ресурсах. Обычно, в студийных проектах это resource.h

Предлагается сделать следущее. Вместо

            VALUE "FileVersion", "1, 8, 1, 0\0"
            VALUE "ProductVersion", "1, 8, 1, 1\0"
сделай
            VALUE "FileVersion", FILE_VERSION
            VALUE "ProductVersion", PRODUCT_VERSION

вверху .rc инклудируй

#include "vers_dat.h"

ну и в сам vers_dat.h

#define FILE_VERSION            "1, 8, 1, 0\0"
#define PRODUCT_VERSION    "1, 8, 1, 0\0"

так же можно сделать другие параметры.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #12 : 29-09-2005 10:43 » 

Джон,

спасибо за информацию!
Короче, никакого счастья в личной жизни Ага Придется опять прикладывать ручки Ага
Сейчас попробую.
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #13 : 29-09-2005 11:14 » 

Да нет, на самом деле один раз сделал, а потом сплошное счастье. Улыбаюсь
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #14 : 04-10-2005 12:13 » 

Ура, сделала! Ага Теперь уже почти счастье Ага

Еще один дурной вопрос:
есть бат - файл:
Код:
start ..\VersionChange.exe
rc primer.rc
cl primer.c primer.res

Смысл был - стартует программа с диалогом для изменения значений версий (VersionChange.exe), а по окончании уже выполняется компиляция.
Но в реальности так не получается ;-(  Т.е. задержки для изменения версий не получается.
Вопрос - как в бат - файле сделать так, чтобы оно получилось? Или это никак не сделать? 
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #15 : 04-10-2005 12:42 » 

Ирин, а зачем тебе вообще с БАТом возится? Сделай всё в диалоге!

1. Запускаешь диалог (ты его всё-равно запускаешь)
2. Выбираешь .rc и .c файлы
3. Устанавиливаешь нужные параметры (версию и тп)
4. Жмёшь "Ок"

После того как подготовила версию (это уже у тебя есть)

STARTUPINFO si;
      PROCESS_INFORMATION pi;
      ZeroMemory(&si, sizeof(si));
      si.cb = sizeof(si);
      ZeroMemory(&pi, sizeof(pi));
      BOOL bRes = ::CreateProcess(NULL, _T("rc primer.rc"), NULL, NULL,
                           FALSE, 0, NULL, NULL, &si, &pi);

      if(!bRes)
      {
         // ошибка
      }
      WaitForSingleObject(pi.hProcess, INFINITE);

повторяем для "cl primer.c primer.res"
Ессно параметры надо сделать динамичными, типа stParam.Format(_T(rc %s),stRCFileName)
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #16 : 04-10-2005 13:00 » 

зы По существу вопроса - у тебя start стоит - убери его. Или используй call
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #17 : 04-10-2005 15:27 » 

Джон,

спасибо за идею - пробую Ага
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #18 : 05-10-2005 05:06 » 

можно запустить так

start /w VersionChange.exe

тогда будет дожидаться окончания выполнения Улыбаюсь
Записан

Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #19 : 05-10-2005 06:37 » 

Леш,

муррр Ага Спасибочки, щас и это опробую Ага
Если можно, вопрос не по теме - это все фотографии одного кота или нет?
Я до сих пор вспоминаю фотографию, где кот лежит на диване на спинке - это просто натуральное пособие для успокоения нервов!

Джон,

спасибочки, я попробовала - работает! Я еще сейчас сделаю так, чтобы из экзешника все можно было бы делать и ура - у меня возможностей будет больше, чем у начальства желаний Ага
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #20 : 05-10-2005 06:51 » 

кот один и тот же, квартира - одна и та же (кота Улыбаюсь )

фотка с диваном - сейчас недоступна, но могу другие показать - недавние
(кстати 14 коту уже Улыбаюсь )
Записан

Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #21 : 05-10-2005 09:17 » 

ого, он у тебя долгожитель Ага А то, что это его квартира, никто и не сомневается Ага У меня в детстве были кошки, поэтому я это хорошо знаю - они занимают собой все и без них уже ничего неинтересно Ага А когда они пропадают, это превращается в трагедию домашнего масштаба.
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #22 : 05-10-2005 09:22 » 

а квартира у него 3-комнатная Улыбаюсь

кстати вечером сегодня иду к нему в гости - давно там не был
Записан

Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #23 : 05-10-2005 10:03 » 

Здорово - он тебе что-нибудь хорошее намурчит Ага
Передавай ему привет от меня! Ага
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #24 : 05-10-2005 10:20 » new

обязательно : )
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines