Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];

Вниз

Посоветуйте как лучше поступить.   Найти похожие ветки 

 
DVM ©   (2009-10-24 14:16) [0]

Мне надо сделать сделать порядка 20 билдов одной и тоже программы, различающихся лишь тем, что в одном из модулей будет прошита разная константа у всех. Ну типа серийного номера, но не серийный номер, используется не для защиты, а скорее для информационных целей. Константа потом будет использована в программе.

Билдить все руками неохота, потом лучше день потерять зато потом за час долететь.

Как такое лучше провернуть? Как бы вы поступили? Для меня предпочтительнее компилировать бат файлом, вопрос в том как лучше менять значение константы, в остальном все понятно.


 
Упс   (2009-10-24 14:24) [1]

В файле настроек?


 
Riply ©   (2009-10-24 14:26) [2]

> [0] DVM ©   (24.10.09 14:16)
> Билдить все руками неохота, потом лучше день потерять зато потом за час долететь.

> Как такое лучше провернуть? Как бы вы поступили?
> Для меня предпочтительнее компилировать бат файлом, вопрос в том как лучше менять значение константы, в остальном все понятно.

Добавить DEFINE в командну строку ?


 
Pavia ©   (2009-10-24 14:27) [3]

Инклюдишь файл со своей константой. Через "copy con" меняешь константу.


 
Суслик_   (2009-10-24 14:45) [4]


> Pavia ©   (24.10.09 14:27) [3]
>
> Инклюдишь файл со своей константой. Через "copy con" меняешь
> константу.

+1

я так и дела.

если константа числовая, то можно в бинарнике править. надо только придумать, как найти место. можно db инструкции использовать.


 
DVM ©   (2009-10-24 14:48) [5]


> Упс   (24.10.09 14:24) [1]


> В файле настроек?

В файле настроек чего? Моей программы? Если так, этот вариант отпадает. Этой константе незачем быть "на виду".


> Riply ©   (24.10.09 14:26) [2]


> Добавить DEFINE в командну строку ?

О таком варианте уже думал, просто хотел узнать про альтернативы.


> Pavia ©   (24.10.09 14:27) [3]


> Инклюдишь файл со своей константой. Через "copy con" меняешь
> константу.

Этот вариант тоже второй который пришел в голову.

Хорошо спасибо, собственно как я и хотел либо возьму [2] либо [3]


 
Дмитрий Белькевич   (2009-10-24 14:59) [6]

Как мы делаем, в батнике: dcc32.exe any.dpr -B -DCOPY%1

ну а далее - либо руками номера подставляешь параметр батника, либо вызываешь из другого батника:

for /L %%i IN (1,1,3) DO call BuildPackage.bat %%i

В самом проекте - скопипащенные дефайны.


 
DVM ©   (2009-10-24 15:01) [7]


> Дмитрий Белькевич   (24.10.09 14:59) [6]

Спасибо


 
XXL   (2009-10-24 15:02) [8]

... и даже fc /b элементарно выявит различия между билдами :)


 
DVM ©   (2009-10-24 15:05) [9]


> XXL   (24.10.09 15:02) [8]


> ... и даже fc /b элементарно выявит различия между билдами
> :)

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


 
Суслик_   (2009-10-24 17:41) [10]

у VmProtect есть т.н. водяные знаки - заносит в программу уникальные коды, которые в общем случае трудно вычистить. В результате по бинарнику можно понять владельца.


 
Омлет ©   (2009-10-24 21:24) [11]

Имеется скрипт StringReplaceInFile.vbs

On Error Resume Next
fileName = WScript.arguments(0)
patrn = WScript.arguments(1)
replStr = WScript.arguments(2)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShellApp = CreateObject("Shell.Application")
LogPath = objFSO.GetParentFolderName(WScript.ScriptFullName)

replaceTextInFile fileName, patrn, replStr

Function replaceTextInFile(FilePath, patrn, replStr)
   On Error Resume Next
   Set TFile = objFSO.OpenTextFile(FilePath, 1)
   fileText = TFile.ReadAll
   fileText = ReplaceTest(fileText, patrn, replStr)
   Set WFile = objFSO.OpenTextFile(FilePath, 2)
   WFile.WriteLine fileText
   WFile.Close
End Function

Function ReplaceTest(src_str, patrn, replStr)
   Dim regEx
   Set regEx = New RegExp
   regEx.Pattern = patrn
   regEx.Global = False
   regEx.IgnoreCase = True
   ReplaceTest = regEx.Replace(src_str, replStr)
End Function


Он вызывается из батника с передачей параметров: путь до файла, в котором заменять; текст, который заменяем; текст, на который заменяем.
Я брал файл-шаблон, где на нужном месте было что-то вроде %PARAM_X%, копировал его в нужную папку, заменял в нем %PARAM_X% на необходимый текст и компилировал.
И накаких проблем.


 
Омлет ©   (2009-10-24 21:30) [12]

objShellApp и LogPath по ходу не нужны, при последней правке забыл убрать.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
15-1256309335
YurikGL
2009-10-23 18:48
2009.12.27
Тупо списали с видеокамеры, теперь оно не играет


2-1257708059
andrewtitoff
2009-11-08 22:20
2009.12.27
Почему не фильтруется ADOQuery?


2-1257824241
Андрей Смирнов
2009-11-10 06:37
2009.12.27
Как подсчитать кол-во вхождений в RichEdit?


4-1226050103
pushkin42
2008-11-07 12:28
2009.12.27
А какое сообщение возникает когда...


1-1215982046
Stan
2008-07-14 00:47
2009.12.27
Кириллица отображается неверно.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский